Einzelnen Beitrag anzeigen

Lemmy

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

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 16. Feb 2005, 06:43
Guten Morgen,

was heißt hier niedrige Objektebene? Wieviele Nachfahren von TDBObject willst Du denn erzeugen? Die Klasse TAdresse ist mein Ziel, dort steckt alles drin, was ich in dieser Anwendung benötige. Neben TAdresse gibts noch ein paar andere. Lediglich bei einer Klasse habe ich mich zu ner weiteren Vererbung entschlossen, da ich diese universell einsezten muss:

Delphi-Quellcode:
type THoaiAnsatz=Class(TDBObject)
     protected
       sHoaiAnsatzNr, sAuftragNr, sBeschreibung, sBearbeiter, sStrasse, sOrt, sTeilort,
       sSonstiges, sPLZ:String;
       cSchaetzung, cBerechnung, cAnschlag, cFeststellung:Currency;
       cSchaetzungHonorar, cAnschlagHonorar, cFeststellungHonorar, cBerechnungHonorar:Currency;
       cMwst, cBesondereLeistungen, cLeistungsbild, cNebenkosten, cAbschlag:Currency;
       cNebenPauschale, cBLWiederholungen:Currency;

       iHoaiZone, iHoaiZuschlag:SmallInt;
       iHoaiTeilID:SmallInt;

       dtDatum:TDate;

       iAuftraggeberID, iHoaiVorlageID, iAuftragID:Int64;
       adrAuftraggeber:TAdresse;
       sHoaiVorlage:String;

       AnrechenbareKost:THoaiAnrechenbareKosten;
       IBDatabase:TIBDatabase;

       cGrundhonorar:Currency;

       iObjektID:Int64;

       sBegruendung:TStringList;

       procedure SelectValues; override;
       procedure SetValues; override;
       function GetNebenkostenHonorar:Currency; virtual;
       procedure SetSQLStatement;

     public
       constructor create(DefaultTransaction: TIBTransaction; HOAIAnsatzID:Int64);
       procedure free; override;

       procedure saveValues; override;

       property AnsatzNummer:String read sHoaiAnsatzNr;
       property AuftragNummer:string read sAuftragNr;
       property Beschreibung:String read sBeschreibung;
....

und deren Ableitungen:

Delphi-Quellcode:
type THoai2Ansatz=Class(THoaiAnsatz)
     protected

       IBDataSetDetail:TIBDataSet;
       cVorplanungen, cEntwurfsplanungen:Currency;

       iWiederholungen:Integer;
       iVorplanung, iEntwurfsplanung:Integer;
       cUmbauzuschlag:Currency;
       cWiederholungenHonorar,cWiederholungenLB, cVorhandeneBausubstanz:Currency;

       sSQLDetail, sSaveSQLDetail:String;


       procedure SelectValues; override;
       procedure SaveValues; override;
       procedure SetValues; override;
       function GetNebenkostenHonorar:Currency; override;
       procedure SetSQLStatement;

     public
       constructor create(DefaultTransaction: TIBTransaction; HOAIAnsatzID:Int64);
       procedure free; override;
...

Von den Ableitungen gibts derzeit 2, im Endausbau werden es wohl um die 12 werden.

Ein "allgemeingültiges" Objekt wirst Du nie erzeugen können, wenn Du durch das Objekt (z.B. Adresse:TAdresse) die Eigenschaften auslesen willst (Adresse.Name) Da kannst Du nicht einmal ne Adresse auslesen und ein anderes mal den Lagerbestand! Dazu brauchst Du spezielle Klassen, die sich der Gegebenheit der Tabelle anpassen.

Holger Klemt geht in seinem Artikel allerdings etwas neutraler an die Sache ran, was aber wieder bedeutet, dass schon bei der Erstellung der Datenbank auf diese Art des Datenbankzugriffs eingegangen werden muss!

Grüße
Lemmy
  Mit Zitat antworten Zitat