AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit SQL.Add

Ein Thema von jmich · begonnen am 14. Feb 2022 · letzter Beitrag vom 16. Feb 2022
Antwort Antwort
Seite 1 von 2  1 2      
jmich

Registriert seit: 24. Dez 2007
40 Beiträge
 
#1

Problem mit SQL.Add

  Alt 14. Feb 2022, 19:32
Delphi-Version: 5
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;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Problem mit SQL.Add

  Alt 14. Feb 2022, 19:39
Fehlt da nicht ein Komma nach jeder set-Zeile?

https://www.w3schools.com/sql/sql_update.asp
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem mit SQL.Add

  Alt 14. Feb 2022, 19:40
Selbst Schuld, wenn du in deiner Fehlerbehandlung deinem sinnlosen Try-Except-Gestümpere grob fahrlässig die ursprüngliche Fehlermeldung vernichtest.


PS:
Zitat:
SQL.Add('Where Rechnr = + QuotedStr(ed_rechngd_rechnr.Text)+');
und die Kommas
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
618 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Problem mit SQL.Add

  Alt 15. Feb 2022, 05:51
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.

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

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?

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

Try-Except-Gestümpere
Himitsu! Du hast zwar recht, aber das kann man auch ein klein wenig freundlicher sagen.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.

Geändert von Sinspin (15. Feb 2022 um 05:51 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem mit SQL.Add

  Alt 15. Feb 2022, 06:59
Hallöle...

...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?

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" https://www.delphipraxis.net/190316-...e-creator.html

Geändert von haentschman (15. Feb 2022 um 07:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#6

AW: Problem mit SQL.Add

  Alt 15. Feb 2022, 07:05
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Problem mit SQL.Add

  Alt 15. Feb 2022, 08:52
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.
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
jmich

Registriert seit: 24. Dez 2007
40 Beiträge
 
#8

AW: Problem mit SQL.Add

  Alt 15. Feb 2022, 17:40
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#9

AW: Problem mit SQL.Add

  Alt 15. Feb 2022, 17:52
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Problem mit SQL.Add

  Alt 15. Feb 2022, 18:58
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.
Persönliche Entwicklung im Fachgebiet -> Stetig steigend
Persönliche Entwicklung im Umgang mit Menschen -> Stetig fallend
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:11 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