Forum: Datenbanken
by p80286,
12. Apr 2017
Was willst Du erreichen?
Mit der bisher besprochenen Abfrage stehen Dir die abgefragten Daten zur Verfügung. Wenn Du in dieser Menge (Listview?) navigieren willst, mußt Du dies in der Listview machen und nicht durch eine neue Abfrage.
Zu Deiner Abfrage:
durch das .Open wird die Abfrage durchgeführt (.Open entspricht .Aktive:=True; .Close entspricht .Aktive:=False)
das .Aktve:=True; ist...
Forum: Datenbanken
by p80286,
11. Apr 2017
Zunächst:
end;
qryMain.close;
qryMain.ExecSQL; {---------- das ist Quark!!}
RefreshItems(CurrentCustomerID, edtCustomerNumber.Text, EdtName.Text, EdtVorname.Text, EdtFirma.Text, EdtProdukt.Text, EdtAnzahl.Text, EdtPreis.Text);
end;
dann würde ich den Update auf das/die Felder beschränken, die Du wirklich übergibst.
Forum: Datenbanken
by p80286,
11. Apr 2017
in dem UPDATE muß es dann heißen Where ID=2
und für den SELECT
qryMain.SQL.Text := 'SELECT ID,KDNR,NAME,VORNAME,FIRMA,PRODUKT,ANZAHL,PREIS FROM WARENVERKAUF1';
qryMain.Open;
while not qryMain.EOF do begin
{ hier die Werte übernehmen}
idfeld:=qryMain.Fields.Fieldbyname('ID').asstring;
......
qryMain.Next;
Forum: Datenbanken
by p80286,
11. Apr 2017
@Haentschman
da
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;
qryMain.ParamByName('Anzahl').Text:=(edtTest_input.text);
qryMain.ExecSQL;
denke ich er ist auf dem richtigen Weg. Ob die Syntax...
Forum: Datenbanken
by p80286,
11. Apr 2017
Was verbirgt sich hinter "RefreshItems"?
Da ich überzeiugter Ignorant von Datensensitiven Controls bin (DBGrid etc.) würde ich das ganze ungefähr so lösen:
(pseudocode)
Mywerte.preis:=sqlGetpreis;
Mywerte.anzahl:=sqlGetAnzahl;
Mywerte.Summe:=Berechne(MyWerte.Preis,MyWerte.Anzahl);
sqlUpdateDB(Mywerte.Summe);
Display(sqlGetSumme);