1

我有一个 Access 2002 应用程序,它通过 ODBC 将 Oracle 表与以下代码链接:

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)并建议使用 ADO 而不是 DAO。有人可以告诉我如何修改此代码以满足 Access 2007 的要求吗?

4

2 回答 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 回答