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

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.