Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman
Online

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

AW: gesonderte Ergebnisberechnung in DB-Tab eingeben

  Alt 12. Apr 2017, 07:05
Halleluja...
Zitat:
if IsEdit then // Ist das Flag gesetzt?
...hatte ich doch gesagt.

Was fällt dir in den 3 Codeauszügen auf?
Delphi-Quellcode:
qryMain.SQL.Text := 'UPDATE WARENVERKAUF1 SET KDNR = :KNR, NAME = :NAM, VORNAME = :VNA, FIRMA = :FIR, PRODUKT = :PRO, ANZAHL = :ANZ, PREIS = :PRE WHERE ID = :CID';
...
RICHTIG (weil von mir): Leerzeichen als Abtrennung "Name = AR", Jeder Paramater ist ein : gefolgt von einem Kürzel "ID = :CID"
Delphi-Quellcode:
qryMain.SQL.Text:= 'UPDATE Warenverkauf1 SET KDNR = :KNR, NAME = :NAM, VORNAME =: VNA, FORMA = : FIR, PRODUKT = : PRO, ANZAHL =: ANZ, PREIS = :PRE WHERE ID =CID';
...
FALSCH: Manche Parameter haben kein : und andere ein Leezeichen im Namen (ANZAHL =: ANZ)
Delphi-Quellcode:
qryMain.SQL.Text:= 'UPDATE Warenverkauf1 SET KDNR = :KNR, NAME = :NAM, VORNAME = : VNA, FIRMA = : FIR, PRODUKT = : PRO, ANZAHL =: ANZ, PREIS = :PRE WHERE ID = :CID';
...
FALSCH: Manche Parameter haben ein Leezeichen im Namen (ANZAHL =: ANZ)...andere stimmen wieder. (ID = :CID)

Das das hier geht ist normal:
Delphi-Quellcode:
qryMain.SQL.Text:= 'UPDATE WARENVERKAUF1 SET ANZAHL = :ANZ WHERE ID= :CID';
.
...trotzdem: kein Leerzeichen als Abtrennung "ID= :CID"
Zitat:
Mit allen Feldern wollte er nicht und hat bereits bei VNA gemeckert, dass er VNA nicht kennen würde.
Logisch bei so vielen Tippfehlern...Parametername (siehe oben). Wie kriegt man das hin mit Copy/Paste über den Quelltext solche Fehler einzubauen.

Parameter auch wenn es FireDac ist, es ist überall gleich:
http://docwiki.embarcadero.com/RADSt...ands_(FireDAC)
Zitat:
To put a parameter marker into the SQL text, use the :<name> syntax.
Du hattest versprochen die Codevervollständigung und den Formatter zu benutzen... Da könnte sowas nicht bei rauskommen.
Zitat:
qryMain.ParamByName('NAM').AsString := EdtName.text;
qryMain.ParamByName('ANZ').asInteger:=strtoint(edtTestInput2.text);
Auch wenn du das für dein Hobby machst...denke bitte an unsere empfindlichen Augen. Ein ordentlicher Quelltext mit vernüftigen Einrückungen läßt sich deutlich besser lesen.

Geändert von haentschman (12. Apr 2017 um 07:09 Uhr)
  Mit Zitat antworten Zitat