2008-11-26 11 views
1

J'ai une application Access 2002 qui relie une table Oracle via ODBC avec ce code:Lien une table ODBC dans 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 

Malheureusement, Access 2007 n'accepte pas cette syntaxe plus, en disant que ODBCDirect est n'est plus supporté (erreur d'exécution 3847) et suggère d'utiliser ADO au lieu de DAO. Quelqu'un pourrait-il s'il vous plaît me dire comment puis-je modifier ce code pour satisfaire Access 2007?

Répondre

3

Je trouve que je pouvais résoudre mon problème d'une manière très simple, en supprimant les deux premières déclarations et modifiant la troisième façon suivante:

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

De cette façon, la table serait liée sans demander quoi que ce soit. Si je quitte la chaîne de connexion simple « ODBC », à la place, l'accès vous demandera de spécifier la connexion odbc et les autres paramètres manquants, obtenant ainsi la même chose que j'ai essayé de jouer avec les déclarations précédentes.

+0

Oui, c'est * beaucoup * plus simple :) –

-2

Essayez ceci:

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 

Remplacer le texte entre parenthèses ([]) avec vos informations.

+0

J'ai trouvé un moyen de faire plus court ce que je dois. J'apprécie votre aide, de toute façon. Je vous remercie! –

+0

Ce code n'a aucun sens. Il utilise ADO pour créer une table liée ODBC. DAO est beaucoup plus approprié pour cela. –

+0

« Malheureusement, Access 2007 n'accepte pas cette syntaxe plus, en disant que ODBCDirect est plus pris en charge (erreur d'exécution 3847) et suggère d'utiliser ADO au lieu de DAO » ... Je voulais juste aider l'OP avec ce qu'ils étaient demandant ... –

Questions connexes