Autor Beitrag
Josef-B
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: Do 31.03.05 22:20 
Folgende Abfrage:

ausblenden 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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
ausblenden 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
ausblenden 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 01.04.05 10:16 
Hi
user profile iconJosef-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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: 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:

ausblenden Quelltext
1:
parambyname('Feldbezeichnung').value := query.fieldbyname('andereFeldbezeichnung').value;