AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Dataset als Parameter mit OOP oder wie ?
Thema durchsuchen
Ansicht
Themen-Optionen

Dataset als Parameter mit OOP oder wie ?

Ein Thema von Hansa · begonnen am 14. Feb 2005 · letzter Beitrag vom 17. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Dataset als Parameter mit OOP oder wie ?

  Alt 14. Feb 2005, 21:39
Datenbank: IB/FB • Zugriff über: hierfür egal
Hi,

ich habe hier verschiedene Forms die dienen zum Ausgeben von Listen. Die gleichen sich schon ziemlich, aber sind nicht identisch. Insbesondere die auzugebenden Daten sind natürlich unterschiedlich. Hierzu habe ich mir eine Klasse gebaut, die ganz grob so aussieht :

Zitat von Pseudocode:
ErmittleDaten;
ZeigeKopf;
ZeigePositionen;
ZeigeFuss;
Die Prozeduren sind anfangs leer und werden nach Bedarf von den Nachkommen gefüllt / überschrieben usw. Nur, wo bringe ich jetzt da allgemeingültig das Dataset rein ?

Das wird schon überall gebraucht, ist aber immer eine andere Tabelle. 8) Ich habe nun in der Ursprungsform folgendes stehen :

Delphi-Quellcode:
  ErmittleDaten (DS); // DS ist als VAR Parameter deklariert.
  while not DS.Eof do begin
    ZeigePositionen;
    DS.Next;
  end;
Ich wollte DS erst später konkret besetzen. So scheint es aber nicht zu gehen. Wo muß das DS hin um es später je nach Lage zu nutzen ? So wie es hier steht gibt es nur AVs.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 14. Feb 2005, 22:15
Hallo Hansa,

wie hast du denn ErmittleDaten deklariert?

  procedure ErmittleDaten(DS: TDataSet); Ist es als Methode zu deiner Klasse oder als globale Prozedur deklariert? Wie sieht der Body der Methode aus?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 00:33
procedure ErmittleDaten(var DS: TDataSet); Bei mir ist vieles in protected untergebracht und auch das :

Delphi-Quellcode:
  protected
    DS : TDataset;
Ist natürlich ein FIBdataset, aber das ist egal.

Eben weil ich es später noch brauche. Momentan ist der Stand eben so, daß ich die ganze Prozedur auch leer lassen könnte und schreibe in einem Nachfahren das Dataset im Klartext da rein. Das will ich aber nach Möglichkeit umgehen, denn ich brauche nur einen Platzhalter, der nach Bedarf besetzt wird und dann könnte ich die "ErmittleDaten" Prozedur allgemein halten und nur das jeweilige Dataset verwenden.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 00:45
Warum sollte das protected sein?
Du hast sicher eine abstrakte Basisklasse...
Die bekommt ein privates Feld fDataSet vom Typ TDataSet. Dazu eine öffentliche oder protected readonly Property DataSet.
Der Constructor der Basisklasse schuckt ein const aDataSet :TDataSet und besetzt damit fDataSet. Warum sollten die Nachfahren auch diekten Zugriff darauf haben?
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 00:49
Zitat von Hansa:
[...]denn ich brauche nur einen Platzhalter, der nach Bedarf besetzt wird und dann könnte ich die "ErmittleDaten" Prozedur allgemein halten und nur das jeweilige Dataset verwenden.
Warum machst du das nicht über Eigenschaften?

Delphi-Quellcode:
type
  TVorfahre = class
  private
    FDataset: TDataSet;
  protected
    procedure ErmittleDaten; virtual; abstract;
    procedure ZeigeKopf; virtual; abstract;
    procedure ZeigePositionen; virtual; abstract;
    procedure ZeigeFuss; virtual; abstract;
    property Dataset: TDataSet read FDataset write FDataset;
  end;
Delphi-Quellcode:
type
  TNachkomme = class(TVorfahre)
  ...
  public
  ...
    property Dataset;
  end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 01:49
So, Thx, das geht jetzt so weit. Property war tatsächlich das, was ich vermißt hatte. Es wird schon mal compiliert. Allerdings kommt noch AV beim ersten Zugriff auf "Dataset".

Das muß doch wohl noch irgendwo her kommen bzw. erzeugt werden. Wenn das noch jemand wüßte, wäre echt nett. Für jetzt reichts mir erst mal. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 07:10
Hi,

das DataSet über eine Property zu setzen ist nicht wirklich gut. Wenn dann sollte das über den Konstruktor laufen:

constructor create(DS:TFIBDataSet);

Grüße
Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 13:24
Was ? Nicht wirklich gut ? Dann muß ich anders fragen : was ist besser ? Ich habe das ja auch nur mit property gemacht, weil Sprint und Robert_G gesagt haben, so sollte ich es machen.

Soweit scheint das ganze ja auch zu gehen, bis auf die Zugriffsverletzung, weil das Ding wohl nicht initialisiert ist. Ich muß doch bestimmt zumindest den Tabellennamen mit angeben. Was überhaupt alles ?

Eigentlich hatte ich vor dem property-Dataset ein konkretes aus meinem Datenmodul zuzuweisen. Also so :

Dataset := KundeDS; // Dataset : property KundeDS : aus Datemodul Hierbei kommt dann Zugriffsverletzung :

Dataset.close; Das ist der erste Zugriff auf "Dataset" überhaupt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 13:26
Wie? Was? Wo?
Hast du dir überhaupt meinen Post durchgelesen?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Dataset als Parameter mit OOP oder wie ?

  Alt 15. Feb 2005, 13:42
Ich bräuchte ein Beispiel für den Constructor. Momentaner Stand ist, daß ich das von Sprint so umgesetzt habe. Also habe ich statt meines konkreten Datasets eben "Dataset" da stehen, kann aber nicht drauf zugreifen. Mit ein paar Wörtern alleine komme ich so nicht weiter. Wo muß der Konstruktor genau hin ? Wie sieht er konkret aus ?

Bzw. um es nochmals zu sagen : wie teile ich meinem Programm mit, daß es sich an einer Stelle bei Dataset um den Lagerbestand handelt und woanders z.B. um eine Adresse ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz