AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler in SQL-Anweisung
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler in SQL-Anweisung

Ein Thema von Hansi · begonnen am 4. Mär 2006 · letzter Beitrag vom 5. Mär 2006
Antwort Antwort
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#1

Fehler in SQL-Anweisung

  Alt 4. Mär 2006, 14:14
Datenbank: MySQL • Version: 4.1 • Zugriff über: ZEOS
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehler in SQL-Anweisung

  Alt 4. Mär 2006, 14:40
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 Insert Into products_descriptions (products_name) values ( :p1)'; heißen.

Soll es auch bei einem Leerfeld funktionieren versuchs mal mit
ZQ_Shp.ParamByName('p1').Value := ZQ_Art.FieldByName('BEZEICHNUNG').Value;
Markus Kinzler
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#3

Re: Fehler in SQL-Anweisung

  Alt 5. Mär 2006, 09:53
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
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Fehler in SQL-Anweisung

  Alt 5. Mär 2006, 10:40
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';
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Fehler in SQL-Anweisung

  Alt 5. Mär 2006, 10:55
Hallo Hansi,

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

Grüße vom marabu
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#6

Re: Fehler in SQL-Anweisung

  Alt 5. Mär 2006, 11:14
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
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Fehler in SQL-Anweisung

  Alt 5. Mär 2006, 11:26
Hallo,

das was marabu meinte, wird auch nicht unbedingt im Delphi-Code stattfinden, sondern eher beim erstellen deiner Tabelle in der Datenbank.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Fehler in SQL-Anweisung

  Alt 5. Mär 2006, 11:34
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 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