1

次のコードを使用して、ODBC 経由で Oracle テーブルをリンクする Access 2002 アプリケーションがあります。

Set HRSWsp = CreateWorkspace("CONNODBC", "", "", dbUseODBC)
Set HRSConn = HRSWsp.OpenConnection("HRSCONN", dbDriverPrompt, , "ODBC;")
DoCmd.TransferDatabase acLink, "Database ODBC", HRSConn.Connect, acTable, "SCHEMA.TABLE", "TABLE", False, True

残念ながら、Access 2007 はこの構文を受け入れなくなりました。ODBCDirect はサポートされなくなったため (ランタイム エラー 3847)、DAO の代わりに ADO を使用することを提案します。Access 2007 を満たすためにこのコードを変更する方法を教えてください。

4

2 に答える 2

3

最初の 2 つのステートメントを削除し、3 つ目のステートメントを次のように変更することで、非常に簡単な方法で問題を解決できることがわかりました。

DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;DRIVER=Microsoft ODBC for Oracle;SERVER=myserver;UID=myuser;PWD=mypassword", acTable, "SCHEMA.TABLE", "TABLE", False, True

このようにして、何もプロンプトを表示せずにテーブルがリンクされます。接続文字列を単純な "ODBC" のままにしておくと、代わりに、Access は odbc 接続とその他の不足しているパラメーターを指定するように要求するため、前のステートメントで実行しようとしたのと同じ結果が得られます。

于 2008-11-27T08:26:29.203 に答える
-2

これを試して:

Dim tbl As New ADOX.Table
Dim cat As New ADOX.Catalog

cat.ActiveConnection = _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[x:\your_access_db.mdb];Jet OLEDB:Engine Type=4"

tbl.NAME = "[Access_table_name]"

Set tbl.ParentCatalog = cat

tbl.Properties("Jet OLEDB:Create Link") = True
tbl.Properties("Jet OLEDB:Link Provider String") = "ODBC;Driver={Microsoft ODBC For Oracle};Server=OracleServerName;Uid=[user];Pwd=[password];"
tbl.Properties("Jet OLEDB:Cache Link Name/Password") = True
tbl.Properties("Jet OLEDB:Remote Table Name") = "[Oracle_Schema].[Table]"

cat.Tables.Append tbl
cat.ActiveConnection.Close

括弧 ( []) 内のテキストを自分の情報に置き換えます。

于 2008-11-27T02:37:09.190 に答える