Die nächste Schritte, wo ich aus den Informationen im allwissenden Netz nichts wirklich passendes gefunden habe Liste der Objekte einer Klasse ('SELECT * FROM ArtikelGruppen') erstelle mit Create und Destroy (Ich kapiere das einfach nicht
 - oder ich finde nicht die richtige Anleitung dafür )
 - oder ich finde nicht die richtige Anleitung dafür )Da ich sicher nicht der Einzige bin, der sich am Anfang mit OOP schwer tut, halte ich das ganze etwas ausführlicher. Mit eurer Unterstützung entsteht dann eine Nachschlagewerk.
 
 Code: Alles auswählen
unit uartikelgruppe;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, LazLoggerBase, DBCtrls, dtm_basis;
 
type
 
  { TArtikelgruppe }
 
  TArtikelgruppe = class(TObject)
  private
    fIsChanged: boolean;
    fID: integer;
    fIDColor: integer;
    fArtikelgruppe: string;
  public
    constructor Create;
    destructor Destroy;
 
    procedure SetIDColor(const aValue: integer);
    procedure SetArtikelgruppe(const aValue: string);
 
    procedure Init;
    procedure ReadByID(ID: integer);
    procedure WriteData;
    procedure ReadData(Query: string);
  published
    // idartikelgruppe, artikelgruppe, fk_color
    property IsChanged: boolean read fIsChanged write fIsChanged default False;
    property ID: integer read fID write fID default -1;
    property IDColor: integer read fIDColor write SetIDcolor default 0;
    property Artikelgruppe: string read fArtikelgruppe write SetArtikelgruppe;
  end;
// ... und hier hänge ich erneut und benötige euer Wissen:
  TArtikelgruppenListe = class()  // Dachte das sollte TObjectlist sein, aber das geht nicht
    FArtikelgruppen: array of TArtikelgruppe;
  public
    constructor Create;
    destructor Destroy; override;
  end;
 
implementation
 
procedure TArtikelgruppe.SetIDColor(const aValue: integer);
begin
  if fIDColor = aValue then
    exit;
  fIDColor := aValue;
  IsChanged := True;
end;
 
procedure TArtikelgruppe.SetArtikelgruppe(const aValue: string);
begin
  if fArtikelgruppe = aValue then
    exit;
  fArtikelgruppe := aValue;
  IsChanged := True;
end;
 
 
constructor TArtikelgruppe.Create;
begin
  inherited Create;
  Init;
end;
 
procedure TArtikelgruppe.Init;
begin
  fID := -1;
  fIDColor := 0;
  fArtikelgruppe := '';
end;
 
procedure TArtikelgruppe.ReadByID(ID: integer);
begin
  ReadData('Select * from ArtikelGruppen where idartikelgruppe = ' + IntToStr(ID));
end;
 
procedure TArtikelgruppe.WriteData;
begin
  debugln('TArtikelgruppe.WriteData: ');
  if fIsChanged then
  begin
    fIsChanged := False;
    with dtmBasis.qrySQL do
    begin
      if fID < 0 then
      begin
        SQL.Clear;
        SQL.Add('Insert Into ArtikelGruppen');
        SQL.Add('(fk_color, artikelgruppe)');
        SQL.ADD('VALUES');
        SQL.ADD('(:fk_color, :artikelgruppe);');
        Prepare;
      end
      else
      begin  //Update
        DebugLn('  Datensatz ' + IntToStr(fid) + ' wird aktualisiert');
        SQL.Clear;
        SQL.ADD('UPDATE ArtikelGruppen SET');
        SQL.ADD('fk_color = :fk_color,');
        SQL.ADD('artikelgruppe = :artikelgruppe');
        SQL.ADD('WHERE idartikelgruppe = :idartikelgruppe;');
        Params.ParamByName('idartikelgruppe').AsInteger := fID;
      end;
      Params.ParamByName('fk_color').AsInteger := fIDColor;
      Params.ParamByName('artikelgruppe').AsString := fArtikelgruppe;
      try
        ExecSQL;
        DebugLn('  Gespeichert!');
        if fID = -1 then
        begin
          SQL.Text := 'SELECT * FROM view_lastid';
          Open;
          fID := FieldByName('LastID').AsInteger;
          debugLn('  Neue ID ist: ' + IntToStr(fID));
          Close;
        end;
      except
        On E: Exception do
          debugln(' ' + E.Message);
      end;
    end;
  end
  else
    DebugLn('  Nicht gespeichert: Datensatz aktuell');
end;
 
procedure TArtikelgruppe.ReadData(Query: string);
begin
  debugln('TArtikelgruppe.ReadData: ');
  with dtmBasis.qrySQL do
  begin
    try
      SQL.Text := Query;
      Open;
      fID := FieldByName('idartikelgruppe').AsInteger;
      fIDColor := FieldByName('fk_color').AsInteger;
      fArtikelgruppe := FieldByName('artikelgruppe').AsString;
      Close;
    except
      On E: Exception do
        debugln(' ' + E.Message)
    end;
  end;
end;
 
destructor TArtikelgruppe.Destroy;
begin
  inherited;
end;
 
 
end.

 Verein
Verein 
 Links
Links Suche
Suche