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.