29.12.2020, 17:59
Hallo Community,
ich möchte via VBA Daten aus Excel in eine Access Datenbank schreiben.
Das Zusammenfügen des UPDATE Strings funktioniert einwandfrei, allerdings werden nur beim ersten Durchlauf der Each Next Schleife die Daten in MS-Access tatsächlich geändert. Ab dem zweiten Durchlauf wird nichts mehr geändert.
Habe ich hier irgendeine Codezeile vergessen?
Vielen Dank!
Michael
ich möchte via VBA Daten aus Excel in eine Access Datenbank schreiben.
Code:
Sub DatenAktualisieren()
Dim rngZ As Range
Dim SQL As String
Dim DatenBankPfad As String
DatenBankPfad = "Y:\data.accdb"
Dim db As dao.Database
Set db = OpenDatabase(DatenBankPfad)
For Each rngZ In Range("EingabeAbfrage").SpecialCells(xlCellTypeVisible).Rows
SQL = "UPDATE data SET "
SQL = SQL & "external_effort=" & IstLeer(Cells(rngZ.Cells(1).Row, 7).Value) & "," 'Personal Aufwand / external_effort
SQL = SQL & "external_cost=" & IstLeer(Cells(rngZ.Cells(1).Row, 8).Value) & "," 'Personal Kosten / external_cost
SQL = SQL & "travelexternal_effort=" & IstLeer(Cells(rngZ.Cells(1).Row, 9).Value) & "," 'Externe Reiseaufwand / travelexternal_effort
SQL = SQL & "travelexternal_cost=" & IstLeer(Cells(rngZ.Cells(1).Row, 10).Value) & "," 'Externe Reisekosten / travelexternal_cost
SQL = SQL & "travel_cost=" & IstLeer(Cells(rngZ.Cells(1).Row, 11).Value) & "," 'Reisespesen / travel_cost
SQL = SQL & "license_cost=" & IstLeer(Cells(rngZ.Cells(1).Row, 12).Value) & "," 'Software / license_cost
SQL = SQL & "hardware_cost=" & IstLeer(Cells(rngZ.Cells(1).Row, 13).Value) & ","
SQL = SQL & "comment=""" & Cells(rngZ.Cells(1).Row, 14).Value & """ " 'Kommentar / comment
SQL = SQL & "WHERE "
SQL = SQL & "projectphase=" & Cells(rngZ.Cells(1).Row, 3).Value
SQL = SQL & " AND vendor=""" & Cells(rngZ.Cells(1).Row, 4).Value & """"
SQL = SQL & " AND year_month=#" & Format(Cells(rngZ.Cells(1).Row, 6).Value, "dd-mm-yyyy") & "#"
SQL = SQL & " AND plan_actual=""" & Cells(rngZ.Cells(1).Row, 5).Value & """ ;"
MsgBox SQL
db.Execute SQL
If dao.Errors.Count > 0 Then
temp = MsgBox("Bei der Speicherung in die MS-Access Datenbank ist ein Fehler aufgetreten", vbCritical)
End
End If
Next
temp = MsgBox("Speicherung erfolgreich", vbInformation)
db.Close
Set db = Nothing
End Sub
Das Zusammenfügen des UPDATE Strings funktioniert einwandfrei, allerdings werden nur beim ersten Durchlauf der Each Next Schleife die Daten in MS-Access tatsächlich geändert. Ab dem zweiten Durchlauf wird nichts mehr geändert.
Habe ich hier irgendeine Codezeile vergessen?
Vielen Dank!
Michael