nach den Vorschlägen von K.H sieht meine Procedure für den neuen Testbutton so aus:
Delphi-Quellcode:
procedure TMainFrm.btnTestInput1Click(Sender: TObject);
var
CurrentCustomerID: string;
begin
qryMain.SQL.Clear;
qryMain.Params.Clear;
if IsEdit then
begin
CurrentCustomerID := lvProductList.Selected.Caption;
qryMain.SQL.Text := 'UPDATE WARENVERKAUF1 SET KDNR=:KDNR,NAME=:NAME,VORNAME=:VORNAME,FIRMA=:FIRMA,PRODUKT=:PRODUKT,ANZAHL=:ANZAHL,PREIS=:PREIS WHERE ID = 2';
qryMain.ParamByName('ID').AsString := CurrentCustomerID;
qryMain.ParamByName('Anzahl').asInteger:=strtoint(edtTestInput.text);
qryMain.ExecSQL;
qryMain.Close;
qryMain.SQL.Text := 'SELECT ID,KDNR,NAME,VORNAME,FIRMA,PRODUKT,ANZAHL,PREIS FROM WARENVERKAUF1';
qryMain.Open;
while not qryMain.EOF do
begin
CurrentCustomerID:=qryMain.Fields.Fieldbyname('ID').asstring;
edtCustomerNumber.Text := qryMain.FieldByName('KDNR').AsString;
EdtName.Text := qryMain.FieldByName('NAME').AsString;
EdtVorname.Text := qryMain.FieldByName('VORNAME').AsString;
EdtFirma.Text := qryMain.FieldByName('FIRMA').AsString;
EdtProdukt.Text := qryMain.FieldByName('PRODUKT').AsString;
EdtAnzahl.Text := qryMain.FieldByName('ANZAHL').Asstring;
EdtPreis.Text := qryMain.FieldByName('PREIS').Asstring;
qryMain.Next;
end;
qryMain.close;
qryMain.ExecSQL;
RefreshItems(CurrentCustomerID, edtCustomerNumber.Text, EdtName.Text, EdtVorname.Text, EdtFirma.Text, EdtProdukt.Text, EdtAnzahl.Text, EdtPreis.Text);
end;
end;
Hoffentlich ist das richtig. Er läuft jedenfalls durch.
Mein Debug-Versuch ist gescheitert, denn er durchläuft mit F7 (einzelne Schritte) den Weg bis nach Wladiwostock. Ein Haltepunkt auf die obige Proc. brachte auch nichts, denn da geht es um die Eingaben. und ich kann sogar "Hundehütte" eingeben, wenn ich das Wort in Integer umwandeln könnte. Die Anzahl bei Lehmann bleibt immer gleich.Habe ich die Update - Where-Bedingung und nachfolgend die ParamByName Werte richtig eingesetzt?
Wo ist der Hund für die Hundehütte?