| Autor |
Beitrag |
Crowbar
      
Beiträge: 180
WinXP, SP2
D6 Enterprise
|
Verfasst: Mi 19.03.03 11:50
Hallo,
ich habe eine SQL-Tabelle worin u.a. ein Date-Feld vorhanden ist. Jetzt gibt es einen Fall, dass das Date-Feld leer bleiben muss bzw. kann.
Führe ich den SQL-Befehl aus, erscheint eine Fehlermeldung: "bad date...". Wenn ich irgendein Datum eingegebe funktioniert es.
Wie kann ich es anstellen, ein leeres Date-Feld einzufügen?
Tschüss Crowbar
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 19.03.03 11:58
Hallo,
versuche mal Datefeld=NULL.
Gruß
Klabautermann
|
|
Crowbar 
      
Beiträge: 180
WinXP, SP2
D6 Enterprise
|
Verfasst: Mi 19.03.03 12:19
hallo,
dies habe ich auch schon ausprobiert. Da ich aber die Werte für die Tabelle zuerst in eine Variable einlesen muss, gibt es ebenfalls einen Fehler.
"Could not convert variant of type (null)..."
z.B.
wert[1]:=null; oder wert[1]:=datetostr(null);
Crowbar
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 19.03.03 15:17
... einfach das Datum-Feld nicht ansprechen ...
| Zitat: | with QueryHistory.SQL do begin
Clear;
Add('UPDATE history SET kndcd = ' + Hkndcd);
if Length(Haadatum) > 9 then Add(',aadatum = ' + Haadatum); Add(' WHERE lfdnr = ' + LfdNrHistory);
end;
QueryHistory.ExecSQL; |
Fertig. Ob nu UPDATE oder INSERT oder sonst was ist egal, einfach nur vorher die Gegenprobe ob ein Datum existiert.
Und wenn kein Datum eingegeben wurde, wird auch nichts ins Datum-Feld geschrieben, und es bleibt leer. Punkt. Fertig
|
|
Crowbar 
      
Beiträge: 180
WinXP, SP2
D6 Enterprise
|
Verfasst: Mi 19.03.03 15:41
Hallo,
wie ist es mit folgenden Code, wenn das Datum leer ist:
Quelltext 1: 2:
| datum_leer:=''; Query.SQL.Add('INSERT INTO '+SQLTableName+' (ARTIKEL,DATUM,ARTNUMMER) VALUES (''Testartikel'','+datum_leer+',''TestArtnummer'')'); |
Hier kommt der oben beschriebene Fehler.
Gruss Crowbar
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 19.03.03 17:40
naja, mach es so wie in meiner antwort!!
und nochmal für dein beispiel:
aus
Quelltext 1:
| 'INSERT INTO '+SQLTableName+' (ARTIKEL,DATUM,ARTNUMMER) VALUES (''Testartikel'','+datum_leer+',''TestArtnummer'')'[/quote] |
wird
Quelltext 1: 2: 3: 4:
| 'INSERT INTO '+SQLTableName+' (ARTIKEL,DATUM,ARTNUMMER) VALUES (''Testartikel'','+datum_leer+',''TestArtnummer'')' |
dann klammer datum aus:
Quelltext 1: 2: 3: 4:
| 'INSERT INTO '+SQLTableName+' (ARTIKEL,ARTNUMMER) VALUES (''Testartikel'',''TestArtnummer'')' |
und geb ihm ne eigene SQL-Anweisung, aber validiere vorher!
Quelltext 1: 2:
| if datum_leer <> "" then 'UPDATE '+SQLTableName+' SET datum = " +datum_leer' |
logisch, oder?
oder auch so:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Add ('INSERT INTO '+SQLTableName); Add (' ARTIKEL, '); if datum_leer <> "" then Add (' DATUM, '); Add (' ARTNUMMER ') ; Add (' VALUES '); Add (' 'Testartikel', '); if datum_leer <> "" then Add (, '+datum_leer+', '); Add (' 'TestArtnummer''); |
fertig.
Und nochmal zur Erklärung:
Wenn du weist, eins deiner Datenfelder reagiert sensibel auf Leere Eingaben, dann stelle diese Felder hinten an, und füge sie nur nach einer vorherigen Prüfung ein.
Und noch n Tipp: Mach mehr Leerzeichen. Erstens reagiert SQL auf fehlende Leerzeichen sehr alergisch, und zweitenst siehst du besser durch"!
mfg
|
|
|