Thema: Kundenliste

Einzelnen Beitrag anzeigen

EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#59

AW: Kundenliste

  Alt 19. Apr 2017, 22:04
ich verzweifele: obwohl beim Hinzufügen die ID mit -1 ausgewiesen wird geht das Programm (Debugger) beim Speichern (SavetoDB) in den Bereich UPDATE????
Was ist hier los? Es sollte doch bei -1 nach INSERT gehen. Was mache ich wohl falsch??? Stimmt die Procedure SaveToDB???????
Habe es jetzt neu gefasst:
Delphi-Quellcode:
procedure TCustomerList.SavetoDB(con: TZConnection);
var
  zqryMain: TZQuery;
  i: Integer;
begin
  zqryMain:=TZQuery.Create(nil);
  try
    zqryMain.connection:=con;
for i := 0 to self.Count-1 do
begin
  if self[i].ID>-1 then
  begin
     zqryMain.SQL.Text:='UPDATE WARENVERKAUF1 SET KDNR=:KNR, NAME =:NAM, VORNAME=:VNA, FIRMA=:FIR, PRODUKT=:PRO, ANZAHL=:ANZ, PREIS=:PRE WHERE ID=:CID';
     zqryMain.params.parseSQL(zqryMain.sql.text, True);
     zqryMain.Params.ParamValues['CID']:=self[i].ID; //update
     zqryMain.params.ParamValues['KNR']:=self[i].KDNR;
     zqryMain.params.paramValues['NAM']:=self[i].Name;
     zqryMain.params.paramValues['VNA']:=self[i].Vorname;
     zqryMain.params.ParamValues['FIR']:=self[i].Firma;
     zqryMain.Params.ParamValues['PRO']:=self[i].Produkt;
     zqryMain.Params.ParamValues['ANZ']:=self[i].Anzahl;
     zqryMain.params.paramValues['PRE']:=self[i].Preis;
     zqryMain.ExecSQL;
  end;
  begin
    if self[i].ID=-1 then
    begin
      zqryMain.SQL.text:='INSERT INTO WARENVERKAUF1(KDNR,NAME,VORNAME,FIRMA,PRODUKT,ANZAHL,PREIS) VALUES(:KNR, :NAM, :VNA, :FIR, :PRO, :ANZ, :PRE)';
      zqryMain.params.parseSQL(zqryMain.sql.text, True);
      zqryMain.params.ParamValues['KNR']:=self[i].KDNR; //insert
      zqryMain.params.paramValues['NAM']:=self[i].Name;
      zqryMain.params.paramValues['VNA']:=self[i].Vorname;
      zqryMain.params.ParamValues['FIR']:=self[i].Firma;
      zqryMain.Params.ParamValues['PRO']:=self[i].Produkt;
      zqryMain.Params.ParamValues['ANZ']:=self[i].Anzahl;
      zqryMain.params.paramValues['PRE']:=self[i].Preis;
      zqryMain.ExecSQL
    end;

  end;
end;
 finally
    zqryMain.Free;
  end;
end;
Ich habe einen Haltepunt auf zqryMain.Params.ParamValues['CID']:=self[i].ID; //update gesetzt und dann geprüft, wass beim Aufruf des Programms und Hinzufügen eines Datensatzes passiert. Leider nicht dass was ich erwartet habe.
Es ist doch nicht zu glauben, dass das letzte Problem einfach nicht klappen soll.
Ich will eigentlich an dieser Stelle nicht aufgeben, doch ich weiss einfach nicht weiter.
Norbert
  Mit Zitat antworten Zitat