Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Problem mit SQL.Add (https://www.delphipraxis.net/209984-problem-mit-sql-add.html)

jmich 14. Feb 2022 19:32

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;

Bernhard Geyer 14. Feb 2022 19:39

AW: Problem mit SQL.Add
 
Fehlt da nicht ein Komma nach jeder set-Zeile?

https://www.w3schools.com/sql/sql_update.asp

himitsu 14. Feb 2022 19:40

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:

SQL-Code:
SQL.Add('Where Rechnr = + QuotedStr(ed_rechngd_rechnr.Text)+');

und die Kommas

Sinspin 15. Feb 2022 05:51

AW: Problem mit SQL.Add
 
Zitat:

Zitat von jmich (Beitrag 1502190)
Was mache ich falsch ?
Delphi-Quellcode:
  with LiteQuery_rechng do
              begin
                SQL.Add('Nachlassumme = :nasum');
                try
                 ExecSQL;;
               except
                  ShowMessage('Speichern fehlgeschlagen');
                end;
              end;

So zimelich alles.

Delphi-Quellcode:
with
Das hatten wir doch erst? Das ist eine Plage! Vergiss einfach das es existiert und arbeite ohne!

Delphi-Quellcode:
ShowMessage('Speichern fehlgeschlagen');
Genau! Nur wo?
Delphi-Quellcode:
try
//alles sql gezerre
except on E:Exception do
  ShowMessage('Speichern fehlgeschlagen. Fehler : '+E.Message);
end;
Wäre es so nicht etwa besser?

Delphi-Quellcode:
SQL.Add('Nachlassumme = :nasum');
Nach jedem Feld in der Zuweisungsliste kommt ein Komma (außer beim letzten natürlich)

Zitat:

Zitat von himitsu (Beitrag 1502193)
Try-Except-Gestümpere

:roll:Himitsu! Du hast zwar recht, aber das kann man auch ein klein wenig freundlicher sagen.

haentschman 15. Feb 2022 06:59

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:
...
SQL.Add('Where Rechnr = + QuotedStr(ed_rechngd_rechnr.Text)+');
...meinst du, daß das SQL(string) "QuotedStr" versteht? :wink:

besser für die Zeile:
Delphi-Quellcode:
...
SQL.Add('where Rechnr = ' + QuotedStr(ed_rechngd_rechnr.Text));
die richtige Zeile:
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: https://www.delphipraxis.net/190316-...e-creator.html

himitsu 15. Feb 2022 07:05

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.

rokli 15. Feb 2022 08:52

AW: Problem mit SQL.Add
 
Moin,

Du könntest das auch so schreiben:

Delphi-Quellcode:
   qry1.SQL.Text   :=   'UPDATE Rechnung SET ' +
               '   MWSteuer = :mw ' +
               '   ,Nachlassumme = :nasum ' +
               '   ,Sicherheitsumme = :ssum ' +
               '   ,Skontosumme = :sksum ' +
               '   ,Nettosumme = :nsum ' +
               '   ,Bruttogesamt = :bsum ' +
               'WHERE ' +
               '   Rechnr = :ed_rechngd_rechnr ';
und dann kommt das füllen der Parameter.

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.

jmich 15. Feb 2022 17:40

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

himitsu 15. Feb 2022 17:52

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.

Sharky 15. Feb 2022 18:58

AW: Problem mit SQL.Add
 
Zitat:

Zitat von himitsu (Beitrag 1502206)
Was soll man da denn noch sagen?

Ohne den Schwachsinn mit Try-Except,..

Schön zu sehen, dass sich Deine Arroganz auch nach mehreren Jahren nicht gelegt hat. :cry:
Persönliche Entwicklung im Fachgebiet -> Stetig steigend
Persönliche Entwicklung im Umgang mit Menschen -> Stetig fallend


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.
Seite 1 von 2  1 2      

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