Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

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

AW: gesonderte Ergebnisberechnung in DB-Tab eingeben

  Alt 11. Apr 2017, 14:21
Hallöle...
Zitat:
Abfrage eines Datensatzes
Query.sql.text := 'Select irgendwas...';
Öffnen
Query.Open;
Datenzeiger positionieren
Query.first;
Editmode einschalten
Query.edit;
Feld ändern
Query.fieldByName('feldname').asinteger := ....
Zurückschreiben
Query.Post;
..bitte keine DB sensitiven Controls. Späterhinaus will er seine Daten in Objektlisten speichern...
Zitat:
denke ich er ist auf dem richtigen Weg. Ob die Syntax so ganz richtig ist(?) Bei mir werden die Parameter immer mit .Value:= übergenen.
...Value ist auch eine Möglichkeit. Aber intern hat er immer den Cast zu richtigem Typ. As...spricht gleich den richtigen Typ der in der DB an. So findet auch heraus das man einen falschen Typ übergeben hat.

Zum Problem am Beispiel:
Delphi-Quellcode:
qryMain.SQL.Text := 'UPDATE WARENVERKAUF SET KDNR=:KDNR,NAME=:NAME,VORNAME=:VORNAME,FIRMA=:FIRMA,PRODUKT=:PRODUKT,ANZAHL=:ANZAHL,PREIS=:PREIS,MEMO=:MEMO WHERE ID = :CID';
qryMain.ParamByName('CID').AsString := CurrentCustomerID; // Ist die ID auch bekannt? Was sagt der Debugger über den Wert?
qryMain.ParamByName('Anzahl').AsInteger:= edtTestInput.Text;
qryMain.ExecSQL;
... Was steht im Feld ID der Datenbank drin? LEHMANN = ID(?) Du kannst nicht einfach den Wert eintragen. Du mußt auch der Datenbank sagen zu welchem Kunden (CurrentCustomerID) der Wert gehört.
Mache ein Edit nebendran mit der ID des Datensatzes. Diese "ausgewählte" ID übergibst du dem UPDATE Statement anstatt der CurrentCustomerID. Nach dem Eintragen in die DB mußt du auch die Daten wieder abholen (SELECT) und die LV aktualisieren.

Geändert von haentschman (11. Apr 2017 um 14:39 Uhr)
  Mit Zitat antworten Zitat