![]() |
Delphi-Version: 5
Problem mit SQL.Add
Hi Leute,
möchte in SQL-Datenbank eine größere Menge Datensätze bzw. Felder updaten. Mit SQL.Text wird mir die Zeile zu lang.Deshalb möchte ich das SQL Statement SQL.Add verwenden. Leider Funktioniert das Speichern nicht. Was mache ich falsch ? Hier mein Code:
Delphi-Quellcode:
with LiteQuery_rechng do
begin Close; SQL.Clear; SQL.Add('UPDATE Rechnung SET'); SQL.Add('MWsteuer = :mw'); SQL.Add('Nachlassumme = :nasum'); SQL.Add('Sicherheitsumme = :ssum'); SQL.Add('Skontosumme = :sksum'); SQL.Add('Nettosumme = :nsum'); SQL.Add('Bruttogesamt = :bsum'); SQL.Add('Where Rechnr = + QuotedStr(ed_rechngd_rechnr.Text)+'); ParamByName('mw').AsCurrency := StrToCurr(lbl_mwst.Caption); ParamByName('nasum').AsCurrency := StrToCurr(lbl_nachlass.Caption); ParamByName('ssum').AsCurrency := StrToCurr(lbl_sicherheit.Caption); ParamByName('sksum').AsCurrency := StrToCurr(lbl_skonto.Caption); ParamByName('nsum').AsCurrency := StrToCurr(lbl_netto.Caption); ParamByName('bsum').AsCurrency := StrToCurr(lbl_brutto.Caption); try ExecSQL;; except ShowMessage('Speichern fehlgeschlagen'); end; end; |
AW: Problem mit SQL.Add
|
AW: Problem mit SQL.Add
Selbst Schuld, wenn du in deiner Fehlerbehandlung deinem sinnlosen Try-Except-Gestümpere grob fahrlässig die ursprüngliche Fehlermeldung vernichtest.
PS: Zitat:
|
AW: Problem mit SQL.Add
Zitat:
Delphi-Quellcode:
Das hatten wir doch erst? Das ist eine Plage! Vergiss einfach das es existiert und arbeite ohne!
with
Delphi-Quellcode:
Genau! Nur wo?
ShowMessage('Speichern fehlgeschlagen');
Delphi-Quellcode:
Wäre es so nicht etwa besser?
try
//alles sql gezerre except on E:Exception do ShowMessage('Speichern fehlgeschlagen. Fehler : '+E.Message); end;
Delphi-Quellcode:
Nach jedem Feld in der Zuweisungsliste kommt ein Komma (außer beim letzten natürlich)
SQL.Add('Nachlassumme = :nasum');
Zitat:
|
AW: Problem mit SQL.Add
Hallöle...8-)
...ich hatte mir geschworen, niemals mehr auf Beitrage die WITH enthalten zu antworten...:? Das WITH sagt...entweder Copy/Paste aus alten Beispielen oder "ich hab das immer so gemacht". Die Zeiten ändern sich...:?
Delphi-Quellcode:
...meinst du, daß das SQL(string) "QuotedStr" versteht? :wink:
...
SQL.Add('Where Rechnr = + QuotedStr(ed_rechngd_rechnr.Text)+'); besser für die Zeile:
Delphi-Quellcode:
die richtige Zeile:
...
SQL.Add('where Rechnr = ' + QuotedStr(ed_rechngd_rechnr.Text));
Delphi-Quellcode:
LiteQuery_rechng.SQL.Add('where Rechnr = :REN');
LiteQuery_rechng.SQL.ParamByName('REN').AsString := ed_rechngd_rechnr.Text; PS: gegen die ADD Origien gibt es was von "mir" :wink: ![]() |
AW: Problem mit SQL.Add
Was soll man da denn noch sagen?
Ohne den Schwachsinn mit Try-Except, würde er bestimmt eine richtige Fehlermeldung bekommen, die ihm alle Fehler zeigt. Selbst wenn die DB das QuoteStr verstehen würde, dann spätestens das im QuoteStr nicht mehr, bzw. die + davor und dahinter auch nicht. Aber vorher wäre erstmal beim zweiten = gemeckert wurden, wegen der fehlenden Komata. |
AW: Problem mit SQL.Add
Moin,
Du könntest das auch so schreiben:
Delphi-Quellcode:
und dann kommt das füllen der Parameter.
qry1.SQL.Text := 'UPDATE Rechnung SET ' +
' MWSteuer = :mw ' + ' ,Nachlassumme = :nasum ' + ' ,Sicherheitsumme = :ssum ' + ' ,Skontosumme = :sksum ' + ' ,Nettosumme = :nsum ' + ' ,Bruttogesamt = :bsum ' + 'WHERE ' + ' Rechnr = :ed_rechngd_rechnr '; Das fehlende Komma ist natürlich das erste Problem, mehrere Felder mit SET ändern bedarf einem Komma vor jedem Feld bzw. nach jedem Inhalt. Und dann kannst Du die Rechnr natürlich auch per Parameter übergeben. |
AW: Problem mit SQL.Add
Als erstes mal vielen Dank.
Die Lösung beim Betrag von Haentschman hatte ich schon auch probiert, aber funhtionierte eben nicht. Das mit den fehlenden Kommas hatte ich auch schon erkannt. Das mit der Fehlerexcept wurde mir von einen im Forum als Lösung unterbreitet. Die Lösung von rokli war für mich die beste und diese klappt auch super. Sie ist sehr übersichtlich. Nochmals vielen Dank besonders an rokli, der auch nett die Lösung rübergebtacht hat. Jmich |
AW: Problem mit SQL.Add
Try-Except macht nur Sinn, wenn man darin auch was Sinnvolles macht.
z.B. den originalen Fehler in ein Log schreiben, oder ihn an die neue Fehlermeldung mit anzuhängen. Oder eben, wenn man genau weiß welcher Fehler es ist und man ihn gezielt unterdrücken will, um es z.B. nochmal anders zu versuchen, oder Dergleichen. |
AW: Problem mit SQL.Add
Zitat:
Persönliche Entwicklung im Fachgebiet -> Stetig steigend Persönliche Entwicklung im Umgang mit Menschen -> Stetig fallend |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 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