Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
Delphi 10.2 Tokyo Professional
|
AW: Kundenliste
17. Apr 2017, 16:36
Danke zunächst. Habe hoffentlich richtig Deine Hinweise umgesetzt:
Delphi-Quellcode:
type
TCustomer=class
private
FID: integer;
FKDNR : Integer;
FName: string;
FVorname: string;
FFirma : string;
FProdukt: string;
FAnzahl : Integer;
FPreis : Currency;
procedure SetID(const Value: Integer);
procedure SetKDNR(const Value: Integer);
procedure SetName(const Value: string);
procedure SetVorname(const Value: string);
procedure SetFirma (const Value : string);
procedure SetProdukt(const Value : String);
procedure SetAnzahl (const Value : Integer);
procedure SetPreis(const Value: Currency);
public
constructor Create;
published
property ID: integer read FID write SetID;
property KDNR: integer read FKDNr write SetKDNR;
property Name: string read FName write SetName;
property Vorname: string read FVorname write SetVorname;
property Firma: string read FFirma write SetFirma;
property Produkt: string read FProdukt write setProdukt;
property Anzahl: Integer read FAnzahl write SetAnzahl;
property Preis: Currency read FPreis write SetPreis;
end;
und weiter:
Delphi-Quellcode:
constructor TCustomer.Create;
begin
inherited;
self.FID:=-1;
end;
Methode SaveToDB:
Delphi-Quellcode:
procedure TCustomerList.SavetoDB(con: TZConnection);
var
zqryMain: TZQuery;
i: Integer;
CustomerListe: TCustomerList;
begin
zqryMain:=TZQuery.Create(nil);
try
zqryMain.connection:=con;
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);
for i:=0 to self.count-1 do
begin
if CustomerListe[i].ID=(-1) then
zqryMain.SQL.text:='INSERT INTO WARENVERKAUF1(KDNR,NAME,VORNAME,FIRMA,PRODUKT,ANZAHL,PREIS) VALUES(:KNR, :NAM, :VNA, :FIR, :PRO, :ANZ, :PRE)' else
zqryMain.SQL.Text:='UPDATE WARENVERKAUF1 SET KDNR=:KNR, NAME =:NAM, VORNAME=:VNA, FIRMA=:FIR, PRODUKT=:PRO, ANZAHL=:ANZ, PREIS=:PRE WHERE ID=:ID';
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;
zqryMain.Next;
end;
finally
zqryMain.free;
end;
end;
Ist das bis hierher exakt?
Ergebnis ist jedoch weiterhin, bei löschen und bearbeiten kommt "Argument außerhalb des Bereiches".
Nachdem ich LoadFromDB aufgerufen habe kann ich einen Datensatz bearbeiten, jedoch nach OK verschiebt sich die Listview-Ansicht nach links dh. Die Anzeige für die ID wird mit der KDNR und die der KDNR mit Name... belegt. Also alles wie gehabt.
Norbert
Geändert von EdAdvokat (17. Apr 2017 um 16:49 Uhr)
|
|
Zitat
|