![]() |
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:
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.
...
ZQ_Shp.SQL.Text := 'Insert Into products_description Set products_name = :p1'; ZQ_Shp.ParamByName('p1').AsString := ZQ_Art.FieldValues['BEZEICHNUNG']; ZQ_Shp.ExecSQL; ... Nun die Frage wie kann ich die FM verhindern und trotdem den DS in die DB schreiben? MfG Hansi |
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:
heißen.
Insert Into products_descriptions (products_name) values ( :p1)';
Soll es auch bei einem Leerfeld funktionieren versuchs mal mit
Delphi-Quellcode:
ZQ_Shp.ParamByName('p1').Value := ZQ_Art.FieldByName('BEZEICHNUNG').Value;
|
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 |
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'; |
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 |
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 |
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. |
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 14:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz