Insert

mikel

Aktiver Benutzer
Beiträge
38
Hallo zusammen,
habe mal eine Frage!

ich möchte per button aus eine Tabelle Daten auslesen und in eine ander kopieren. Das auslesen fuktioniert echt super.
Nur bei Insert bringt er mir ständig die Fehlermeldung "Anzahl der Abfragewerter und Zielwerte stimmt nicht überein"

Beide Tabellen sindgleich, heißen nur unterschiedlich.

Hier mal den Code:

Code:
'Datensätze aus Tabelle 1 auslesen
strSQL = "Select * FROM tbl_eroeffnungsbilanz"
Set rstDaten = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

With rstDaten
    .MoveFirst
    Do Until .EOF
     Kontenklasse = .Fields("kontenklassenid")
     konten = .Fields("kontenid")
     beleg = .Fields("belegnr")
     txt = .Fields("buchungstext")
     soll = .Fields("soll")
     haben = .Fields("haben")
    

     Debug.Print Kontenklasse
     Debug.Print konten
     Debug.Print beleg
     Debug.Print txt
     Debug.Print soll
     Debug.Print haben
    
  
    'Daten aus Tabelle1 in Tabelle 2 einfügen
    strSQL = "INSERT INTO tbl_buchungen (kontenklassenid, kontenid, belegnr, buchungstext, soll, haben) VALUES(" & Kontenklasse & ", " & konten & ", " & beleg & ", '" & txt & "', " & soll & ", " & haben & ")"
     CurrentDb.Execute strSQL, dbFailOnError
      
    .MoveNext
    Loop
    .Close
End With
  

End If
   MsgBox "Die Daten wurden in die Buchungstabelle Übertragen", vbOKOnly, "Test 2023"

End Sub

Woran kann das liegen? Versuche schon seit Stunden hier daruf zu kommen.

Danke schon mal
 
Werbung:
Ich bin kein Mann des VBA aber dein Code ist in jedem Fall ineffizient. Sofern du nicht jeden einzelnen Datensatz noch in irgendeiner Form prüfen willst ist dein SQL Code reduzierbar:
Code:
INSERT INTO tbl_buchungen SELECT * FROM tbl_eroeffnungsbilanz
bzw. natürlich gerne explizit wenn es dann produktiv genutzt wird:
Code:
INSERT INTO tbl_buchungen(kontenklassenid, kontenid, belegnr, buchungstext, soll, haben)
SELECT kontenklassenid, kontenid, belegnr, buchungstext, soll, haben FROM tbl_eroeffnungsbilanz
 
Nur bei Insert bringt er mir ständig die Fehlermeldung "Anzahl der Abfragewerter und Zielwerte stimmt nicht überein"
Ich würde zu der Antwort von @ukulele, die sehr richtig ist, noch ergänzen, dass das Statement in Deinem Code richtig aussieht. (Wenn ich mich nicht verzählt habe und die Hochkommapositionen und anzahlen ebenfalls richtig gelesen habe)

Wenn eine (unpassende) Fehlermeldung kommt, die nicht zum Code zu passen scheint und an dieser Stelle auch nicht reines SQL im Spiel ist, sondern eine weitere Programmiersprache, noch dazu eine Event basierte "Verdrahtung", ein paar Tipps dazu, auch allgemeine:
- ist der Code, den Du betrachtest, wirklich der Code, den Du aufrufst? (Baue eine Debug Message ein, die immer ausgegeben werden muss / vergleiche das eingetragene Event (Namen) in der IDE mit dem vermeintlichen Code
- Gebe eine Debugmessage aus, die das finale Statement nach Verarbeitung der Variablen ausgibt
- Gebe die Debugmessage so aus, dass Du sie kopieren und als reines SQL Statement in einer Abfrage durchführen kannst
- Nutze lieber Parameter statt Variablen (wenn VBA das kann)
- Ändere nicht die Namen der Variablen (oder Parameter), schon gar nicht, wenn die Spaltennamen besser gewählt sind (aussagekräftiger) als die Variablennamen (z.B. kontenid versus konten). (Abwechselsreiche Wortwahl ist eine literarische Qualität, aber keine Programmqualität)
 
Zurst einmal Danke für Eure Hilfe und Antworten.
Aber das Problem lag bei mir. Anfängerfehler.

Habe folgendes angpasst.

DIM haben as string
DIM soll as string
Din belegnr as string

Jetzt geht es. Muss nur noch das mit dem Datum anpassen.

Danke Euch.
 
Werbung:
Zurück
Oben