Einzelnen Beitrag anzeigen

Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 13:05
Hi Hansa,


muss mich entschuldigen! Ich übergebe dem Konstruktor kein DataSet, sondern die Datenbankverbindung mittels der IBDatabase oder der IBTransaction:

also hier mal ein Beispiel (mit IBX, was aber nichts zur Sache tut):


Delphi-Quellcode:
type TDBObject=class(TObject)
     private
     protected
       iID:Int64;
       IBDataSet:TIBDataSet;
       sSQL, sSaveSQL:String;
       bSave, bExpicitTransaction:Boolean;
       Transaction:TIBTransaction;


       procedure SetSQLStatement; virtual;
       procedure SaveValues; virtual;
       procedure SelectValues; virtual; abstract;
       procedure SetValues; virtual;

     public
       constructor create(DefaultDataBase:TIBDataBase); overload;
       constructor create(DefaultTransaction:TIBTransaction); overload;

       procedure Free; virtual;

       procedure Save;

       property SaveDB:Boolean read bSave write bSave;
       property ID:Int64 read iID;
     end;
und hier die abgeleitete Klasse:

Delphi-Quellcode:
type TAdresse=class(TDBObject)
     private
       sName, sStrasse, sOrt, sTelefon, sFax, sAnrede, sTitel, sAnschrift:String;
     protected
       procedure SelectValues; override;
     public
       constructor create(DefaultDataBase:TIBDataBase; AdresseID:Int64);
       property Name:String read sName write sName;
       property Strasse:String read sStrasse write sStrasse;
       property Ort:String read sOrt write sOrt;
       property Telefon:String read sTelefon write sTelefon;
       property Fax:String read sFax write sFax;
       property Anrede:String read sAnrede write sAnrede;
       property Titel:String read sTitel write sTitel;
       property Anschrift:String read sAnschrift;
     end;
Im Konstruktor der Klasse TDBObject wird je nach aufgerufenen Konstruktor eine IBDataSet oder eine IBTransaction + IBDataSet erzeugt und natürlich beim Destruktor wieder freigegeben. Ich habe so einige Klassen erzeugt, teilweise auch mit Enkeln (wie nennt man das, wenn man eine Klasse ableitet und von dieser wieder ableitet?).

Die Übergabe der IBDataSet bzw. Transaction mache ich deshalb, um zum einen bei der IBDataset innerhalb der Klasse die Transaktionssteuerung zu machen, oder wenn ich die Transaction-Instanz übergebe wird die Transaktionssteuerung außerhalb der Klasse vorgenommen (wenn das Objekt der Klasse z.B. von einem anderen Objekt (z.B: Auftrag) aufgerufen wird).



Grüße
Lemmy
  Mit Zitat antworten Zitat