• ベストアンサー

アクセスにオラクルのテーブルをリンク

アクセスでオラクルのテーブルを ODBCでリンクしたいのですが そのとき オラクルのユーザー名を 例えば USERNAME で リンクしたいテーブルを TABLE1 として、 リンクすると アクセス 上では  USERNAME_TABLE1 と言う様に ユーザ名 + テーブル名 になってしまいます。 使用したいのは テーブル名だけなので できれば ユーザ名がつかないでリンクしたいのですが、そう言う事はできないのでしょうか?  テーブルの量がたくさんあるので あとから名前を変更するのが大変なんです・・・  

質問者が選んだベストアンサー

  • ベストアンサー
noname#4564
noname#4564
回答No.2

  >>スクリプト一発で簡単にできるのでは? >  とは アクセスのマクロのことなのですか? VBAです。(マクロではさすがに無理だと思います) 一例ですが、↓こんな感じ。 Option Compare Database Option Explicit Public Const pCstLngFrm As Long = &HFFFF8000 'フォーム Public Const pCstLngMcr As Long = &HFFFF8002 'マクロ Public Const pCstLngRpt As Long = &HFFFF8004 'レポート Public Const pCstLngMdl As Long = &HFFFF8007 'モジュール Public Const pCstLngQry As Long = &H5& 'クエリー Public Const pCstLngTbl As Long = &H1& 'テーブル Public Const pCstLngOdbcTbl As Long = &H4& 'リンクテーブル(ODBCデータソース) Public Const pCstLngLnkTbl As Long = &H6& 'リンクテーブル(*.MDB) Public Sub ReplaceTableName(ByRef strFind As String, ByRef strReplace As String) Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSql As String Dim strTmp As String strSql = "SELECT" strSql = strSql & " Name" strSql = strSql & " FROM" strSql = strSql & " MSysObjects" strSql = strSql & " WHERE" strSql = strSql & " Type = " & CStr(pCstLngOdbcTbl) strSql = strSql & " AND" strSql = strSql & " Name Like '" & strFind & "*'" strSql = strSql & " ORDER BY" strSql = strSql & " Name" Set db = CurrentDb() Set rs = db.OpenRecordset(strSql, dbOpenSnapshot) With rs Do Until .EOF strTmp = .Fields("Name").Value db.TableDefs(strTmp).Name = Replace(strTmp, strFind, strReplace, , , vbTextCompare) .MoveNext Loop .Close End With Set rs = Nothing db.Close Set db = Nothing End Sub

NARA-OOSAKA
質問者

お礼

うわー   わざわざ本当にありがとうございます。  さっそく試してみます。  その結果はまた報告させていただきます。

その他の回答 (1)

noname#4564
noname#4564
回答No.1

  > アクセスでオラクルのテーブルを ODBCでリンクしたいのですが > > そのとき オラクルのユーザー名を 例えば USERNAME で リンクしたい > テーブルを TABLE1 として、 リンクすると アクセス 上では > >  USERNAME_TABLE1 > > と言う様に ユーザ名 + テーブル名 になってしまいます。 > 使用したいのは テーブル名だけなので できれば ユーザ名がつかないで > リンクしたいのですが、そう言う事はできないのでしょうか? 試してませんが、DoCmd.TransferDatabase メソッドでできませんか? > テーブルの量がたくさんあるので あとから名前を変更するのが大変なんです・・・ スクリプト一発で簡単にできるのでは?  

NARA-OOSAKA
質問者

お礼

さっそくの回答ありがとうございます。 じつは、アクセスのVBAとかあまり詳しくないので ファイル->外部データの取りこみ->テーブルのリンク で ODBCでテーブルを指定してリンクしているのです。 >スクリプト一発で簡単にできるのでは?  とは アクセスのマクロのことなのですか?

関連するQ&A

  • odbc接続でaccessのテーブルにリンクを張るには

    オラクルのデータベースからodbc接続でaccessにテーブルをリンクしようとしているのですが、起動した1回だけオラクルのユーザとパスワードがでてきます。ユーザとパスワードをいれずにテーブルをひらくことができるのでしょうか。オラクルのodbcを使っています。odbcの登録にはパスワードを登録するところがありませんでした。

  • AccessからOrcleのODBCリンクテーブルにて

    OS:XP Pro Access:2003 Oracle:9i という環境で、AccessからOracleのODBCリンクテーブルを作成して使用しています。 リンクテーブルを作成する際、パスワードの保存にチェックを入れて、作成しました。 Orcle側のパスワードを変更したいのですが、変更前に作成したリンクテーブルは 作成し直しになってしまうでしょうか?

  • オラクルテーブルで受け付けない文字

    ACCESS97のデータベースで オラクルのテーブルを使用しています。 アクセスのテーブルではクエリーが実行できたのですが (実行時に読込めた) 名前を変更して、(リンクしている)オラクルテーブルで実施すると 上手く行きません。 オラクルテーブルでは、受けつけない文字があると聞いたことがあります。 例えば、 " や ' など。 このような文字 一覧がわかるページ等 ないでしょうか? 

  • MS-Accessのリンクテーブルで更新

    MS-Accessのリンクテーブルで更新 MS-Accessのリンクテーブルを使用して、 Oracleデータベースの表に対して 値の更新をしようとしていますが、 更新が競合しているというメッセージが出て、 更新できません。 また、値の更新をしようとしているタイミングで、 Oracleデータベース側のリンクテーブル対象表に アクセスしている処理はなく、 更新が競合していることありません。 ODBCドライバの設定では、読み取り専用設定は 実施してない点は確認しています。 使用しているソフトウェアの各バージョンは以下になります。 Access 2007 Oracle 10.2.0.4.0 WindowsXP SP3 ODBCドライバ 10.02.00.01 リンクテーブルからの更新自体がそもそも出来ないのでしょうか? MS-Accessを使用してOracleデータベースの表の値を更新したいと思っているのですが、 解決方法をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?

  • ASPでACCESSからoracleにリンクさせて表示したい。

    はじめまして。 いろいろ調べてみたのですが、わからなかったので質問させてください。 現在、ASPを利用してACCESS(2003)のテーブルから簡単な検索をできるようにしています。 このACCESSのテーブルは、別サーバーで動いているoracle(10g)のデーターベースから EXCELでエクスポートしたものを、ACCESSでインポートして使用していました。 この手間を省くため、ACCESSとoracleをODBCを使用してリンクさせたいと思いました。 まず、ODBCのシステムDSNで「oracle in oraclient10g」で追加して、接続を確認。 その後、ACCESSにてODBCでテーブルをリンクさせて開くことも確認できました。しかし、 WEB上で確認したところ、サーバー側・クライアント側でも以下のエラーが出てしまいます。 Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] ODBC--'****' への接続が失敗しました。 これはどのようにすれば、出来るようになるでしょうか。 初歩的な質問で申し訳ありませんが、ご教授ください。 よろしくお願いします。

  • Accessのリンクテーブルについて

    Access2000を使用しているのですが、SQLServerのDBをリンクしなければいけないのですが、ODBCを使用せずにリンクさせる方法はあるのでしょうか? またはモジュールでコードを記述してリンクテーブルを作成する方法でもかまわないのですが・・・。 作成したAccessを配布したPCにODBCを設定するのが面倒なのですが・・・。 なにかいい方法があるのか教えていただきたいです。

  • AccessとDB2のテーブルリンクで…

    お世話になります。 ある2台のサーバーが社内にあります。 その2台のサーバーにはそれぞれ、IBMのDB2というデータベースを使用していて、それぞれのDB2内には同じデータベース名(テーブル)が存在します。 現在、サーバーAから新サーバーBに社内WEBシステムの移行を行っていて、Access2000のテーブルリンクを使って、サーバーAにあるDB2のデータベースAのテーブルとリンクをしています。 その際、テーブルリンクをする為にWindows2000の「ODBC データソース アドミニストレータ」のシステムDSNで、「IBM DB2 ODBC DRIVER」を使用してデータベースAにODBCを介して接続しております。 ですが、サーバーA側と同じ名前の、新サーバーBのデータベースAにODBCを介してテーブルリンクを繋ごうとすると、サーバーAと新サーバーBのデータベースAという名前が同じだからか、システムデータソースを追加しても、新サーバーB側のデータベースAに接続が出来ません。 この場合、新サーバーBのデータベースAの名前を同じものではなく、別の名前に変更した方が宜しいのでしょうか。 質問内容に不足な点がございましたら、内容を再度追加致します。 どうぞご教授宜しくお願いします。

  • access ODBCリンクテーブルの作り方

     自分のPCで、あるaccessの業務システムを作成し、それを数人で共有してデータの入力をするようにする為に、ODBCリンクテーブルというものを作る必要があると思っています。  既存で業務的に違う別のシステムがあり、そこでODBCリンクテーブルというものは使用しています。(退職した前担当者が作成。)  ODBCリンクテーブルというものは、どのうようにして作るのですか?  (地球マークのテーブルです。)

  • oracle XEのACCESS(ODBC接続)で#Deletedと表示される

    ACCESS(2002)のODBCを使用してoracle XEのテーブルリンクして、テーブルの中身を表示すると#Deletedと表示されます。 テーブル名は、英名で、項目名は日本語名称を使用していますが、 そのあたりが原因になっているのでしょうか? 解決策をご存知の方教えてください。

  • AccessでOracleのテーブルをリンクし、Access側では読み取り専用にしたい

    社内にOracleデータベースでのシステムが立ち上がっているのですが、管理帳票の出力用に、OracleのデータをAccessで読み込みたいと思っています。 テーブルのリンクそのものは知っており、成功しているのですが、Oracleデータベースのデータを壊さないようにするため、このリンクテーブルを読み取り専用にしたいと思っています。どのようにすれば良いでしょうか。 なお、Oracle側で読み取り専用ユーザを作成して、そのユーザでリンクすれば良いことは理解していますが、それは最後の手段にしたいと思っています。別の方法でうまくできないでしょうか。

専門家に質問してみよう