[Borland] DataAccess: welke programmeerstijl?

Pagina: 1
Acties:

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 21:47

hneel

denkt er het zijne van

Topicstarter
Zoals misschien bekend kan je in Borland (Delphi of Cbuilder) makkelijk database componentjes op je form plaatsen. Bv. een TTable of een TQuery verbind je met een TDataSource component en die op zijn beurt bv weer met een TDBGrid component.

Nou vroeg ik me af wat de handigste/netste/meest logische manier van gebruik van deze componentjes in de sourcecode is.
Rechtstreeks de TTable en TQuery gebruiken. (b.v. Table1->Open() ).
Of alles zoveel mogelijk via de datasource? (b.v. DataSource1->DataSet->Open() ).

De 2e manier kan als voordeel hebben dat je bv al dan niet tijdelijk een andere query of table op je form kan plaatsen en dan simpel in de datasource kan switchen. Het nadeel is dat het er niet leesbaarder op wordt. Met de 1e manier zie je meteen om welke table of query het gaat.

Wat is jullie voorkeur?

  • MicroWhale
  • Registratie: Februari 2000
  • Laatst online: 23-02 08:16

MicroWhale

The problem is choice

voor mij is een dataSource altijd een 'wijzer' geweest die naar een bepaalde Table of Query wijst. niet meer en niet minder. Zeg maar de interface tussen de gebruikende component en de database view.

Je kunt dus meerdere Tables en Queries voorbereiden en openen voordat je ze met een dataSource verbindt. Daarna laat je de wijzer (de dataSource) naar de gewenste tabel of querie wijzen om de juiste informatie te tonen op je visuele db-components. Dit betekent dat je de Table1.Open en Query1.Open gebruikt.

Het enige belangrijke is dat je vandaag altijd rijker bent dan gisteren. Als dat niet in centen is, dan wel in ervaring.


  • Robbemans
  • Registratie: November 2003
  • Laatst online: 17-07-2025
Je maakt hier een fundamentele denkfout (naar mijn bescheiden mening).

Als je iets wil doen op een object, dan doe je dat op een object en niet op een referentie naar dar object.

Als je dus wil dat de table of query geopend wordt, dan open je de table of query.

Een datasource is eigenlijk een tussenlaag tussen data en visualisatie. Als je 7 datasources hebt die naar dezelfde dataset wijzen (in complexere systemen) dan ga je niet op elke datasource een Open van zijn dataset doen. De Table of Query is dan leidend en zal dus geopend moeten worden, hetgeen zichtbaar wordt in alle datasources.

Het is in dit geval geen voorkeur, maar een manier van denken.

Daarnaast hou ik voor mezelf ene ongeschreven regel aan dat er zo min mogelijk -> of . tussen mogen staan. Een DataSource.DataSet.Open is in mijn optiek dus niet 'correct' als Table1.Open ook mogelijk is.
Hier komt nog bij dat je in sommige applicatie leuke code tegenkomt als: TMyForm(Application.MainForm).MainDataModule.etc etc. Hiermee programmeer je jezelf vast. Mocht je iets dergelijks nodig hebben, abstraheer dan het geheel, zodat je via 1 class dezelfde cuntionaliteit kunt benaderen. In het voornoemde geval dus iets in de trant van AppMainDataModule.etc etc. Hier is AppMainDataModule een globale singleton die overal gebruikt kan worden.

Jouw tweede manier is dan eigenlijk een soort adapter pattern.

[ Voor 4% gewijzigd door Robbemans op 05-04-2006 11:24 ]