Thema: Kundenliste

Einzelnen Beitrag anzeigen

EdAdvokat

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

AW: Kundenliste

  Alt 17. Apr 2017, 15: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 15:49 Uhr)
  Mit Zitat antworten Zitat