Update von Excel nach Access nur beim ersten UPDATE
#1
Hallo Community,

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
Top
#2
Hallo Michael,

mal ungetestet, füge vor dem Next

Code:
SQL = ""

ein.
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo,
danke, aber das Verhalten bleibt gleich.
Top
#4
Hallöchen,

ich denke, Du hast nix vergessen. Die Frage ist, ob bei den weiteren Durchläufen etwas zu ändern ist. Gib dazu mal Deinen SQL-String aus und

- Vergleiche den ersten mit dem zweiten, würden dadurch andere Datensätze geändert oder die gleichen

- Prüfe die Bedingungen, eventuell kannst Du im Access oder Excel mal mit einem SELECT * FROM ... WHERE ... prüfen, was mit Deinen Bedingungen angezeigt wird.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste