Autor |
Beitrag |
Josef-B
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Do 31.03.05 22:20
Folgende Abfrage:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| sql.Text := 'insert into HIS_EINKAUF (ID,VORGANGS_NR,POSITIONS_NR,ARTIKEL_NR,' + 'BEZEICHNUNG_1,BEZEICHNUNG_2,RE_DATUM,RE_BETRAG,UST_KZ_1,BUCHUNGSART +
' values (' +
qhis.fieldbyname('ID').Asstring + ',' + qhis.fieldbyname('VORGANGS_NR').Asstring + ',' + qhis.fieldbyname('POSITIONS_NR').Asinteger + ',' + quotedstr(qhis.fieldbyname('ARTIKEL_NR').Asstring) + ',' + quotedstr(qhis.fieldbyname('BEZEICHNUNG_1').AsString) + ',' + quotedstr(qhis.fieldbyname('BEZEICHNUNG_2').AsString) + ',' + quotedstr(qhis.fieldbyname('RE_DATUM').AsString) + ',' + qhis.fieldbyname('RE_BETRAG').Asstring) + ',' + qhis.fieldbyname('UST_KZ_1').Asstring) + ',' + qhis.fieldbyname('BUCHUNGSART_HANDEL').Asstring) + ')'; |
Das Problem ist, wenn z.b. das Feld Vorgangs_nr (Integer) null ist (leer) dann gibt es ne Fehlermeldung, oder auch wenn das Feld RE_Datum (Date) null ist.
z.B.
Delphi-Quelltext 1: 2: 3: 4:
| insert into HIS_EINKAUF (ID,VORGANGS_NR,POSITIONS_NR,ARTIKEL_NR, BEZEICHNUNG_1,BEZEICHNUNG_2,RE_DATUM,RE_BETRAG,UST_KZ_1,BUCHUNGSART)
values (1,,1,'4711B','Zucker','Raffinade','',116.11,1,1) |
Wie löse ich das?
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Do 31.03.05 22:44
Hi,
du kannst dann den String NULL in dein SQL - Statement einfügen. Oder, was ich gerade für Strings empfehlen würde, benutze die funktion quotedStr für die entsprechenden Felder. Dann wird im Insert ein leerstring draus
Quelltext 1:
| quotedStr(qhis.fieldbyname('VORGANGS_NR').Asstring) |
edit: Uups. Gerade gesehen, daß du das ja schon so machst.
Dann würde ich mit parametern arbeiten. Dann sieht dein SQLString so aus
Quelltext 1: 2: 3:
| 'insert into HIS_EINKAUF (ID,VORGANGS_NR,POSITIONS_NR,ARTIKEL_NR,' + 'BEZEICHNUNG_1,BEZEICHNUNG_2,RE_DATUM,RE_BETRAG,UST_KZ_1,BUCHUNGSART '+ ' values (:ID, :Vorgangs_Nr, :Positions_Nr ...)' |
Dann kannst du einfach sowas machen, um sicherzugehen, daß du NULL auch berücksichtigst
Delphi-Quelltext 1: 2: 3: 4: 5:
| ... if qhis.fieldbyname('VORGANGS_NR').IsNull then DeinQuery.ParamByName('Vorgangs_Nr').clear else DeinQuery.ParamByName('Vorgangs_Nr').AsString := qhis.fieldbyname('VORGANGS_NR').AsString; |
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 01.04.05 10:16
Hi
Josef-B hat folgendes geschrieben: |
...
Das Problem ist, wenn z.b. das Feld Vorgangs_nr (Integer) null ist (leer) dann gibt es ne Fehlermeldung, oder auch wenn das Feld RE_Datum (Date) null ist.
|
Dann wird es wohl so sein, dass diesen beiden Felder in der Tabelle mit Not Null definiert sind. Damit bist du gezwungen für diese beiden Felder entweder Werte mitzuliefern oder per Trigger in der Datenbank automatisch zu belegen.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Josef-B 
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Sa 02.04.05 12:50
Ne an der Definition als Not Null liegt es nicht, ich habs jetzt ähnlich wie CenBells gemacht mit Parametern:
Quelltext 1:
| parambyname('Feldbezeichnung').value := query.fieldbyname('andereFeldbezeichnung').value; |
|
|
|