PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : welche dll muss ich noch registrieren


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

spite
24.11.2008, 11:30
Ich habe den Fehler gefunden, doch keine Lösung :cheesy
Wenn ich die Tabellennamen auslese, dann werden diese nur als Strings in "?" in der Länge der Tabellen name ausgegeben z.B. "???????????". Damit kann die ODBC Schnittstelle nichts anfangen und die Tabelle wird nicht verbunden und eine Fehlermeldung erscheint :mad:
Hatte jemand von euch auch schon mal so ein Problem? Was ist die Abhilfe oder in welche Richtung soll ich suchen?

bagira
24.11.2008, 12:50
wenn die via ODBC eine DB aufmachen willst, dann muss der DB-Name schon übergeben werden.

Was steht in der VAR g_sDatenbank drinnen ? Wenn da nur ??? drinnen sind, dann kann das nicht funktionieren. Das gleiche gilt für User und PW.

Diese Sachen definiert man im ODBC Treiber zu deiner DB.

spite
24.11.2008, 14:58
In den Variablen stehen die werte klar drin und sogar richtig.

g_sDatenbank = DB Name
g_sUser = Username
g_sPassword = Passwort

Warum es die Tabellennamen nicht lesen kann ist mir ein Rätsel. Auf allen anderen Rechnern funktioniert dies ausser auf einen, dann kann es nicht am Code liegen.
Was muss ich noch für die ODBC Verbindung berücksichtigen? Ich vermute mal, dass ich irgendeine Bibliothek in die Registry einbinden muss.

spite
25.11.2008, 13:35
ich versuchte dies jetzt zu umgehen, indem ich die Tabelle der Tabellen als pass through Abfrage realisierte, doch das Problem bleibt :wacko
Es muss nun meiner Meinung was mit dem Charset sein aber wo und wie sehe und behebe ich das?

bagira
25.11.2008, 13:38
schau dir mal die verweise an. vielleicht fehlt auf diesem einem rechner noch was zum installieren.

spite
25.11.2008, 13:43
schau dir mal die verweise an. vielleicht fehlt auf diesem einem rechner noch was zum installieren.
das habe ich schon überprüft, da fehlt nix :blink
das wird immer verwirrender :wut