Hallo,
mein VBA-Code meckert über meinen SQL-String (Syntaxfehler)
cDB.Execute "INSERT INTO tbl_Laderaum(fsPal, fsLKW, LPLaenge, " _
& "LPBreite, LPHoehe, LPGewicht, LPPack) " _
& "VALUES (0" _
& ", " & rsTmp!FSLKW _
& ", " & rsTmp!Laenge _
& ", " & rsTmp!Breite _
& ", " & rsTmp!Hoehe _
& ", " & rsTmp!Gewicht _
& ", " & rsTmp!PackID & ")"
Das Direktfenster übersetzt den String so:
INSERT INTO tbl_Laderaum(fsPal, fsLKW, LPLaenge, LPBreite, LPHoehe, LPGewicht, LPPack) VALUES (0, 414, , , , , 1)
Die Feldeigenschaften sind alle auf Zahl gesetzt
2025-10-08 11_43_36-Access.png
Wieso darf ich keine Nullwerte einfügen?
Hallo Doming,
hat mit dem Einfügen von NULL-Werten sicherlich nichts zu tun, aber m.W.n. muss für jedes angegebene Feld auch ein Wert angegeben werden; daher könnte auch der Syntaxerror herrühren. Sie dir nochmal in der Jet-SQL Hilfe die genaue Beschreibung und Anmerkungen zu der SQL-Anweisung "INSERT INTO ..." an. Ich meine, dort wäre das auch so erklärt.
Knobbi38
@Ulrich Anzahl Felder und Values stimmen überein.
@Doming Ich könnte mir vorstellen, dass es am Datentyp der Felder mit den
Massen liegt; - kann man nicht erkennen.
Bei LongInteger (wie bei den FK-Felder) dürfte nix falsch laufen,
ausser das evtl. vorhandene Nachkommastellen verschwinden.
Bei Zahlentypen mit Nachkommastellen kann es sein, dass das Dezimal-
zeichen den Fehler auslöst.
Da müssten m.E. die Values angepasst werden
...
& ", " & Str(rsTmp!Laenge) _
...
Die anderen Felder entsprechend.
gruss ekkehard
Zitat von: Doming am Oktober 08, 2025, 11:49:47Wieso darf ich keine Nullwerte einfügen?
Klar darfst du Nullwerte einfügen. Du tust es nur nicht. Das würde so aussehen:
INSERT INTO tbl_Laderaum(fsPal, fsLKW, LPLaenge, LPBreite, LPHoehe, LPGewicht, LPPack) VALUES (0, 414, NULL, NULL, NULL, NULL, 1)
@Beaker s.a. Zitat von: Beaker s.a. am Oktober 08, 2025, 13:27:48@Ulrich
Anzahl Felder und Values stimmen überein.
Nein, die Anzahl stimmt nicht überein.
In dem Beispiel wird für das Feld "LPLaenge" kein Value angegeben (",,"). Eine Auslassung eines Wertes durch weglassen, so daß nur 2 Kommas stehen bleiben um somit den Wert einfach über die Position zu bestimmen, wie es bei einem Funktionsaufruf in VBA möglich ist, gibt es m.M.n. nicht in SQL. Deshalb der Syntaxerror. Wenn du für den Feld keinen Wert angegeben möchtest, müsste man eventuell explizit den Wert "NULL" angeben, so wie es Phil schon vorgeschlagen hat.
Gruß Ulrich