spite
21.11.2008, 13:43
Hallo zusammen,
ich habe eine Access 03 db die per ODBC auf eine MySQL 5.0 Server zugreift. beim starten und einloggen der DB werden die MySQL Tabellen per VBA eingebunden.
'Alle Tabellen löschen
Dim aoTable As AccessObject
For Each aoTable In CurrentData.AllTables
'lokale Systemtabellen nicht löschen
If (Left(aoTable.Name, 4) <> "loc_") And (Left(aoTable.Name, 4) <> "MSys") And (Left(aoTable.Name, 7) <> "Eingang") And (Left(aoTable.Name, 5) <> "liste") Then
DoCmd.DeleteObject acTable, aoTable.Name
End If
Next aoTable
'Liste aller Server-Tabellen laden
Dim cnn As New adodb.Connection
cnn.Open "Provider=MSDASQL.1;Data Source=ifund;Extended Properties=""DSN=ifund;DATABASE=" & g_sDatenbank & ";""", g_sUser, g_sPassword
Dim rsTableNames As New adodb.recordSet
Set rsTableNames = cnn.Execute("SHOW TABLES;")
'Tabellen verknüpfen
Dim catDB As ADOX.Catalog
Dim tblNewTable As ADOX.table
Set catDB = New ADOX.Catalog
catDB.ActiveConnection = CurrentProject.Connection
While Not rsTableNames.EOF
'vgl. office programmierhandbuch s 717ff
Set tblNewTable = New ADOX.table
With tblNewTable
.Name = rsTableNames.Fields(0).value
Set .ParentCatalog = catDB
.properties("Jet OLEDB:Create Link") = True
.properties("Jet OLEDB:Link Provider String") = "ODBC;DSN=ifund;USER=" & g_sUser & ";PASSWORD=" & g_sPassword & ";DATABASE=" & g_sDatenbank & ";" '"ODBC;DSN=ifund;" '
.properties("Jet OLEDB:Remote Table Name") = rsTableNames.Fields(0).value
End With
catDB.Tables.Append tblNewTable '<-- hier kommt der Fehler: ODBC-Aufruf Fehlgeschlagen
rsTableNames.MoveNext
Wend
Auf allen Maschinen im Büro funktioniert die DB ausser auf einem Arbeitsplatz. Der Fehler war der, dass die Bibliotheken msADOX.dll sowie msado15.dll nicht in der Registry eingetragen waren. Dies habe ich per regsvr32 [BIBLOTHEK] nachgeholt.
Trotzdem kommt der Fehler, dass der ODBC-Aufruf fehlgeschlagen ist obwohl ich die ODBC Schnittstelle von MySQL neu installiert hatte.
Die Connection steht nun aber die Tabellen wollen nicht eingebunden werden. der Code stimmt, da dies auf den anderen Rechnern funktioniert. ich vermute ich muss eine Bibliothek noch registrieren aber welche, hat jemand von euch eine Ahnung?
danke spite
ich habe eine Access 03 db die per ODBC auf eine MySQL 5.0 Server zugreift. beim starten und einloggen der DB werden die MySQL Tabellen per VBA eingebunden.
'Alle Tabellen löschen
Dim aoTable As AccessObject
For Each aoTable In CurrentData.AllTables
'lokale Systemtabellen nicht löschen
If (Left(aoTable.Name, 4) <> "loc_") And (Left(aoTable.Name, 4) <> "MSys") And (Left(aoTable.Name, 7) <> "Eingang") And (Left(aoTable.Name, 5) <> "liste") Then
DoCmd.DeleteObject acTable, aoTable.Name
End If
Next aoTable
'Liste aller Server-Tabellen laden
Dim cnn As New adodb.Connection
cnn.Open "Provider=MSDASQL.1;Data Source=ifund;Extended Properties=""DSN=ifund;DATABASE=" & g_sDatenbank & ";""", g_sUser, g_sPassword
Dim rsTableNames As New adodb.recordSet
Set rsTableNames = cnn.Execute("SHOW TABLES;")
'Tabellen verknüpfen
Dim catDB As ADOX.Catalog
Dim tblNewTable As ADOX.table
Set catDB = New ADOX.Catalog
catDB.ActiveConnection = CurrentProject.Connection
While Not rsTableNames.EOF
'vgl. office programmierhandbuch s 717ff
Set tblNewTable = New ADOX.table
With tblNewTable
.Name = rsTableNames.Fields(0).value
Set .ParentCatalog = catDB
.properties("Jet OLEDB:Create Link") = True
.properties("Jet OLEDB:Link Provider String") = "ODBC;DSN=ifund;USER=" & g_sUser & ";PASSWORD=" & g_sPassword & ";DATABASE=" & g_sDatenbank & ";" '"ODBC;DSN=ifund;" '
.properties("Jet OLEDB:Remote Table Name") = rsTableNames.Fields(0).value
End With
catDB.Tables.Append tblNewTable '<-- hier kommt der Fehler: ODBC-Aufruf Fehlgeschlagen
rsTableNames.MoveNext
Wend
Auf allen Maschinen im Büro funktioniert die DB ausser auf einem Arbeitsplatz. Der Fehler war der, dass die Bibliotheken msADOX.dll sowie msado15.dll nicht in der Registry eingetragen waren. Dies habe ich per regsvr32 [BIBLOTHEK] nachgeholt.
Trotzdem kommt der Fehler, dass der ODBC-Aufruf fehlgeschlagen ist obwohl ich die ODBC Schnittstelle von MySQL neu installiert hatte.
Die Connection steht nun aber die Tabellen wollen nicht eingebunden werden. der Code stimmt, da dies auf den anderen Rechnern funktioniert. ich vermute ich muss eine Bibliothek noch registrieren aber welche, hat jemand von euch eine Ahnung?
danke spite