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 )
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.