Hallo
Ich habe ein Problem mit der Verbindung mittels VBA zu einer MySQL Datenbank die in einer Access Datenbank verlinkt ist.
Im Detail sieht mein „Aufbau“ so aus:
In einem Netzwerkverzeichnis liegen zwei Access Datenbanken, jede ist mit einer SQL Datenbank verlinkt die auf zwei verschiedene Servern liegen. (Ein produktives System und ein Test-System)
Die beiden MySQL Datenbanken sind bis auf die aktuellen Daten des letzten Tages stets identisch inklusive aller User-Rechte
Auf dem produktiven Server läuft XAMPP 1.7.4 mit einem Apache Server 2.2.17 und MySQL 5.5.8
Auf dem Test-Server läuft XAMMP 1.7.3 mir einem Apache Server 2.2.14 und MySQL 5.1.41
Die Verlinkung von Access zu den MySQL-Datenbanken erfolgt jeweils über eine System DSN mit dem MySQL ODBC 3.51 Treiber.
Das Problem:
Mit einem Excelmakro soll auf die Datenbanken zugegriffen werden der Soucecode ist der in beiden Fällen identisch. Auf dem produktiven System funktioniert das ohne Probleme. Auf dem Test-System kommet ein Laufzeitfehler 80004005 „ODBC-Verbindung zu „MySQL-DB“ fehlgeschlagen“
Wenn ich nicht VBA benutze kann ich auf die Test-Datenbank zugreifen, d.h. wenn ich die Access Datenbank öffne kann ich auf die MySQL Daten zugreifen oder wenn ich in Excel via Microsoft Query eine Abfrage erstelle funktioniert es auch.
Am Quelltext kann es nicht liegen, da er ja bei dem produktiven System funktioniert. Ich hab ihn trotzdem mal beigefügt (vielleicht kann ich ja noch was lernen)
Code:
Sub TestDB()
Dim Connect As Connection
Dim RecSetRead As Recordset
Dim db_Value As Variant
Set Connect = New ADODB.Connection
With Connect
.Mode = adModeReadWrite
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = "\\network\projects\test.mdb"
.Properties("Jet OLEDB:Database Password") = "geheim"
.Open
End With
Set RecSetRead = New ADODB.Recordset
RecSetRead.Open "SELECT * from db_table WHERE Data_id = '12345'", Connect, adOpenDynamic, adLockReadOnly
If Not RecSetRead.EOF Then
RecSetRead.MoveFirst
On Error Resume Next
db_Value = RecSetRead.Fields("Task_id").Value
On Error GoTo 0
End If
Connect.Close
Set RecSetRead = Nothing
Set Connect = Nothing
End Sub
Ich vermute das irgendeine MySQL Variable auf dem Test-Server falsch ist habe aber keine Ahnung welche.
Danke das ihr den langen Text durchgelesen habt.
Hans