2008-11-26 154 views
1

我有一個Access 2002應用程序,它通過ODBC使用此代碼鏈接Oracle表:鏈接ODBC表在Access 2007

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?

回答

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連接和其他缺少的參數,從而獲得我嘗試使用前面的語句執行的相同操作。

-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 

替換括號([])與你的信息文本。

+0

我發現了一個更短的方式來做我所需要的。無論如何,我感謝你的幫助。謝謝! – 2008-11-27 08:29:01

+0

這段代碼沒有意義。它使用ADO創建一個ODBC鏈接表。 DAO更適合這一點。 – 2008-12-02 05:33:53