Связать таблицу ODBC в Access 2007 - PullRequest
1 голос
/ 26 ноября 2008

У меня есть приложение Access 2002, которое связывает таблицу Oracle через ODBC с этим кодом:

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?

Ответы [ 2 ]

3 голосов
/ 27 ноября 2008

Я обнаружил, что могу решить свою проблему очень простым способом, удалив первые два оператора и изменив третий таким образом:

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 и другие отсутствующие параметры, получая, таким образом, то же самое, что я пытался выполнить с предыдущими операторами.

0 голосов
/ 27 ноября 2008

Попробуйте это:

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

Заменить текст в скобках ([]) информацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...