• ベストアンサー

AccessのVBにて、自動でODBC接続してリンクを自動で張るプログラムを作りたいのですが。。。

AccessのVBで、自動でODBC接続(Oracle)してリンクを張るプログラムを作りたいのですが、参考になるようなサイトを教えて頂けないでしょうか? 良いサイトがなかなか見つからなくて。 ※リンクテーブルの個数が多いので、別ファイルか何かでテーブルを指定したいと思っています。

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

  • ベストアンサー
回答No.1

こんな感じです。 Sub Link作成(p_strDSN名 As String, p_strユーザ As String, p_strパスワード As String)   Dim l_adoCnn  As Object  'ADODB.Connection   Dim l_adoRec  As Object  'ADODB.Recordset   Dim l_adoxCat  As Object  'ADOX.Catalog   Dim l_adoxTbl  As Object  'ADOX.Table   Dim l_strSQL  As String      Set l_adoCnn = CreateObject("ADODB.Connection")      l_adoCnn.Open "Provider=OraOLEDB.Oracle.1;Password=" & p_strパスワード & ";User ID=" & p_strユーザ & ";Data Source=" & p_strDSN名   l_strSQL = "SELECT * FROM USER_TABLES WHERE DROPPED = 'NO'"   Set l_adoRec = l_adoCnn.Execute(l_strSQL)      Set l_adoxCat = CreateObject("ADOX.Catalog")   l_adoxCat.ActiveConnection = Application.CurrentProject.Connection      Do Until l_adoRec.EOF     Set l_adoxTbl = CreateObject("ADOX.Table")          With l_adoxTbl       .ParentCatalog = l_adoxCat       .Name = l_adoRec("TABLE_NAME").Value       .Properties("Jet OLEDB:Create Link") = True       .Properties("Jet OLEDB:Cache Link Name/Password") = True       .Properties("Jet OLEDB:Link Provider String") = "ODBC;DSN=" & p_strDSN名 & ";UID=" & p_strユーザ & ";PWD=" & p_strパスワード       .Properties("Jet OLEDB:Remote Table Name") = UCase(p_strユーザ) & "." & l_adoxTbl.Name            End With          l_adoxCat.Tables.Append l_adoxTbl     l_adoRec.MoveNext   Loop End Sub

masa-it
質問者

お礼

ありがとうございます、参考にさせていただきます。 今すぐ試せる環境に居ないので、結果後ほど。

関連するQ&A

  • ACCESSからのODBC接続について

    Windows2000サーバー上にあるアクセスファイル(別のOracle9サーバーにODBCリンクしている)をWindowsXpパソコンにコピーしましたが、「ODBC-xxxxへの接続が失敗しました」と表示されOracleデータを参照できません。 WindowsXpには、Oracleクライアントはインストール済み、DSNにもMicrosoft ODBC for Oracleを登録済みです。新規にODBCリンクすることは可能です。 エラーなく参照できるようにするにはどうすればいいでしょうか。

  • ACCESSを使ってのODBC接続がうまくいかない

    クライアント側のACCESSを使いODBC経由でMySQLへ接続しようとしたらうまく接続が出来ません。 現象はACCESSの、[新規作成] - [テーブルのリンク] - ファイルの種類を[ODBC Databases ()] - コンピュータデータソースにあるODBCを選択。 すると普通はここでテーブルの一覧が表示されるはずが、最初の画面に戻ってしまいます。 他のソフト(EXCELなど)でODBC接続を行ったところうまくいきます。なのでODBC自体の設定は問題ないと考えられます。 以前はうまく行っていたのですが、ACCESSのデータファイル(.mdb)を一度削除して新たに作り直したらうまくいかなくなりました。 この現象で何かわかる方いらっしゃいますか? よろしくお願いします。 MySQL 4.0 ODBC 3.51 ACCESS 2000

  • AccessからOracleへのODBC接続

    現在、Oracleで作成したデータベースに接続して 検索するソフトを、Accessで作成してあります。 Oracleに接続をするのに、 ODBCを使用しているのですが、 最初依頼があったときは「Oracle8」のときだったので、 「Oracle8」のみ接続可能なプログラムが組んであり、 「Oracle10g」の入っているPCでは接続できないという問題が発生しました。 そこで、「Oracle8」と「Oracle10g」とも接続出来るように プログラムを書き換えたのですが、 現在は「Oracle11g」が最新になっていると思うので、 ゆくゆくはそれに対応しなければならないなあ、と思っています。 そうすると、Oracleがバージョンアップするたびに、 ソフトのプログラムを書き換えなくてはならなくなり、 効率的ではないな…と思いまして… Oracleのバージョンが違っていても、 自分のPCのOracleのバージョンを自動認識して、 AccessからOracleへ接続する方法はあるのでしょうか? ちなみに現在は、TableDefsコレクションを使用して、 まず、Oracle8で繋ぎにいき、それでエラーが起これば Oracle10gで繋ぎにいく、という処理を行っています。 【参考コード】 dim db as object dim tdf as object set db = CurrentDb set tdf = TableDefs("テーブル名") tdf.Connect = "(※テーブルのプロパティの説明のところに入る文)" tbf.RefreshLink (※ここが8と10gで違ってくる) よろしくお願いします。

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

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

  • Access 2003 ODBC リンクについて

    Access2003でのORACLE ODBCリンクについてお伺いいたします。 ヒントだけでも頂ければと思います。 現在Windows2000サーバとWindowsXP端末がリンクされAccessデータベースを 入力・編集・検索するフォームが作成されています。(他の人が作成したもの) これらは、ネットワークケーブルでつながれ、データベースの同期も取られているようです。 先日、ネットワークケーブルを外し、サーバだけで検索しようとしたところリンクできないという エラーになりました。 サーバにデータベースのソースがあり、サーバ単独で稼働するものと考えていましたが、 端末とサーバがないとプログラムが稼働しないことがわかりました。 サーバだけで稼働するようにするには、 (1)テーブル・クエリ・フォームをエクスポートし、新たにを作成しインポートすれば可能でしょうか? (2)リンク先の変更などで可能でしょうか? (2)フォームのODBCリンクの部分をVisual Basicで変更しないと無理でしょうか? 以上よろしくお願いいたします。

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

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

  • AccessにてODBC接続する

    Microsoft Accessについての質問です。 ご存知の方がおりましたらお助け願います。 ・状況 ORACELにODBCで接続しテーブルのリンクをする場合 接続するユーザの参照可能なテーブル数が多いと 一覧に一部のテーブルしか表示されない。 目的のテーブルが一覧に表示されない場合 リンクを作成することができない。 ・知りたいこと 一覧にすべてのテーブルを表示させることは可能でしょうか? すべてのテーブルを表示することが不可能な場合 一覧に表示させるテーブルを制限することは可能でしょうか? 上記二つが不可能な場合、VBA等で追加する方法がありましたら おしえてください。 ・回答についての補足 ORACLE側の設定を変更しない方法で回答願います。 ユーザの作成、シノニム等で制御等はNG 宜しくお願いします。

  • ACCESSとoracleのODBC接続

    accessでoracleとODBC接続しています。access2003です。oracleは最新。 oracleのテーブルの項目数が255を超えています。 ACCESSの制限とか(?)で項目が350位あるので100項目くらいがリンクできません。VBAからselect文で(Select SYA_ID from IDOU)起動してもエラーになってしまいます。 何とか後ろのほうの項目を取得する方法は無いでしょうか? ご指導のほど宜しくお願い致します。

  • ACCESS2000のODBC

    こんにちわ。 いまACCESS2000のMDBにODBC経由で, ORACLE10gのテーブルを参照したいと思い, [テーブルのリンク]-[ファイルの種類]-[ODBC]としたところ, ODBCソースを選択するダイアログが表示されません。 何か設定の不備があるのでしょうか? 教えてください。よろしくお願いします。

  • ACCESSからODBC接続でORA-12504

    Access上でオラクルのテーブルのリンクを設定しようと していますが、「ORA-12504」のエラーが表示されてしまい 接続できず、困っています。 【エラー詳細】 ODBC-呼び出しが失敗しました。 [Oracle][ODBC][Ora]ORA-12154 TNS~ (#12154)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(♯0)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(#0) なお、SQLPlusで接続ができていますし、ODBCアドミニストレータ の接続テストも成功します。 Accessで問題があるのでしょうか? 【環境】 OS:WinXP x64 Access:003 Oracle:サーバ 10g(10.2.0.1) for 64-bit    :クライアント 10g(10.1.0.2) for 32-bit     ※64-bitのオラクルクライアントはAccessが      ドライバを認識しないため使用できませんでした。 何かわかりましたらご教授ください。 よろしくお願いします。

専門家に質問してみよう