Clever-Excel-Forum

Normale Version: VBA Verbinden mit MSQL Datenbank Befehl Update
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Community,

Ich würde mich freuen, wenn mir jemand helfen kann.

Problem:
Ich möchte  eingetragene/geänderte Daten  in einer Excel Tabelle in meiner Mysql Datenbank Updaten.

Die Verbindung klappt bereits einwandfrei, jedoch bekomme ich den Update Befehl noch nicht hin.

Ich sitze nun schon so lange davor, dass ich gerne der Person, die mir den Code schreibt als kleine Anerkennung 10€ via Paypal zukommen lassen will (Ich hoffe das Verstösst nicht gegen die Forumsregeln;))

Hier die Verbindung zur Datenbank

Code:
Dim oConn As ADODB.Connection
Private Sub ConnectDB()
   Set oConn = New ADODB.Connection
   oConn.Open "DRIVER={MySQL ODBC 5.3 UNICODE Driver};" & _
       "SERVER=xxx;" & _
       "DATABASE=xxx;" & _
       "USER=xxx;" & _
       "PASSWORD=xxx;" & _
       "Option=3"
End Sub

Ich habe eine Excel Datei eingefügt zum besseren Verständniss.

Der Grundlegende SQL Befehl wäre:
Update Einkauf SET defektbeschreibung WHERE Artikelid 

Die Artikelid befindet sich in der Excel in Spalte B. Die Defektbeschreibung, welche bei Anderung in MYSQL übernommen werden soll in Spalte E

Ziel: Bei Klick auf einen Button soll die Spalte E (defektbeschreibung) in die Mysql Datenbank  geupdated werden.
       (kein insert nur update, die Daten sind bereits vorhanden)

Vielen Dank für jeden der hier helfen kann :))

Mfg
Hallöchen,

habe mit mysql nix zu tun, aber eventuell liefert da Oracle einen Ansatz. Bei mir würde das in etwa so aussehen. Du machst zuerst eine Abfrage auf die Tabelle bzw. den zu ändernden Datensatz. Dabei musst Du die Parameter zum schreiben mitgeben, z.B. adLockOptimistic
Dann änderst Du das entsprechende Feld und schließt mit Update ab.  

Code:
db_name="MeineDatenbank"
Set Dbase = New ADODB.Connection
Dbase.Open ("Provider=OraOLEDB.Oracle;Data Source=" & db_name & ";User ID=/;Password=;Persist Security Info=True;")
sql_string = "Select /*+ All_Rows */ * from EX_Frauen Where " + _
            " status='ledig'" + _
            " and name = 'Schmidt'" + _
            " order by name"
Set oRsetEx_Frauen = New ADODB.Recordset
oRsetEx_Frauen.Open sql_string, Me.Dbase, adOpenKeyset, adLockOptimistic
If Not oRsetEx_Frauen.EOF Then
 With oRsetEx_Frauen
   .MoveFirst
   .Fields("name").Value = "Meier"
   .Update
 End With
End If
..


Die andere und deutlich kürzere Variante wäre mit Execute den SQL-Befehl direkt auszuführen:

SQL_string = Update Einkauf SET defektbeschreibung = Cells(2, 5) WHERE Artikelid = Cells(2, 2)
oConn.Execute (SQL_string)

und in einer Schleife

Code:
Dim iCnt%
iCnt=2
Do While Cells(iCnt, 2) <> ""
SQL_string = Update Einkauf SET defektbeschreibung = Cells(iCnt, 5)  WHERE Artikelid = Cells(iCnt, 2)
oConn.Execute (SQL_string)
iCnt=iCnt+1
Loop