Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler in SQL-Anweisung (https://www.delphipraxis.net/64505-fehler-sql-anweisung.html)

Hansi 4. Mär 2006 13:14

Datenbank: MySQL • Version: 4.1 • Zugriff über: ZEOS

Fehler in SQL-Anweisung
 
Hey,

Mit folgendem Code schreibe ich einen Datensatz in die DB:

Delphi-Quellcode:
...
ZQ_Shp.SQL.Text := 'Insert Into products_description Set products_name = :p1';
ZQ_Shp.ParamByName('p1').AsString := ZQ_Art.FieldValues['BEZEICHNUNG'];
ZQ_Shp.ExecSQL;
...
So das Problem ist nun wenn das DB-Feld "Bezeichnung" leer ist, bekomme ich eine Fehlermeldung, dass Null nicht in String umgewandelt werden kann; Allgemein ist es aber das gleiche Problem, dass man einen leeren Parameter in die SQL-Abfrage reinmacht.

Nun die Frage wie kann ich die FM verhindern und trotdem den DS in die DB schreiben?

MfG
Hansi

mkinzler 4. Mär 2006 13:40

Re: Fehler in SQL-Anweisung
 
Wenn das Feld BEZEICHNUNG des von ZQ_ART leer isr, was soll dann in products_description geschrieben werden?

Außerdem entspricht dein Query nicht SQL-Standard der INSERT müsste eigentlich
SQL-Code:
Insert Into products_descriptions (products_name) values ( :p1)';
heißen.

Soll es auch bei einem Leerfeld funktionieren versuchs mal mit
Delphi-Quellcode:
ZQ_Shp.ParamByName('p1').Value := ZQ_Art.FieldByName('BEZEICHNUNG').Value;

Hansi 5. Mär 2006 08:53

Re: Fehler in SQL-Anweisung
 
Danke! Damit funktioniert es!

Edit:
Es klappt wunderbar, nur wenn das Feld in das geschrieben werden soll ein "Not Null" Parameter hat, kommt eine Fehlermeldung. Also müsste ich diesen Fall abfangen und dann z.B. "0.00" in das Feld einfügen.

Wie mache ich das am Besten?

MfG
Hansi

GuenterS 5. Mär 2006 09:40

Re: Fehler in SQL-Anweisung
 
Delphi-Quellcode:
   if (not ZQ_Art.FieldByName('BEZEICHNUNG').IsNull) then
     ZQ_Shp.ParamByName('p1').Value := ZQ_Art.FieldByName('BEZEICHNUNG').Value
   else
     ZQ_Shp.ParamByName('p1').Value := '0.00';

marabu 5. Mär 2006 09:55

Re: Fehler in SQL-Anweisung
 
Hallo Hansi,

noch besser als ein NOT NULL constraint ist in diesem Fall ein DEFAULT constraint.

Grüße vom marabu

Hansi 5. Mär 2006 10:14

Re: Fehler in SQL-Anweisung
 
Hey marabu,

ich habe schon ein wenig geschaut nur verstehe ich Deine Antwort nicht ganz. Könntet Du bitte den Code abändern, so wie Du es gemeint hast?

MfG
Hansi

GuenterS 5. Mär 2006 10:26

Re: Fehler in SQL-Anweisung
 
Hallo,

das was marabu meinte, wird auch nicht unbedingt im Delphi-Code stattfinden, sondern eher beim erstellen deiner Tabelle in der Datenbank.

marabu 5. Mär 2006 10:34

Re: Fehler in SQL-Anweisung
 
Günter hat Recht, die constraints sind Bestandteil des Datenbank-Schemas. Manche können allerdings auch später noch per ALTER TABLE geändert werden.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz