[Newbie Access] DAO of ADO*

Pagina: 1
Acties:

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Topicstarter
Beste mensen,
Ik ben nu een tijdje bezig in Access en ik heb onlangs weer een boek gekocht:

( Programmeren in Access 2003 ISBN: 9039523290)

En ook daar weer lees ik veel over ADO en niks over DAO.

Ik ben een beetje confused 8)7 omdat ik weer op andere fora / forums (?)
lees dat ADO oud en versleten is en dan je alles met DAO moet doen.
Dan heb je nog QueryDefs en zo nog wat van die kreten.
Ik wil me graag richten op 1 of twee van deze technieken en die goed bestuderen,
Wat ik nu wil weten is wat gebruik je en wat niet.
En wat gebruik je waarvoor.

Ik heb gezocht op GoT en geggoogled maar ik mis een beetje een eenduidig antwoord.
Wat zijn jullie bevindingen?

BB 8)

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Data Access Object (DAO) is het oude beestje van de twee. Het voordeel (imho) van DAO is dat het zeer nauw samen kan werken met de native jet-engine, of te wel optimaal gebruik maakt van de nukken en eigenaardigheden van access databases. Kom je daarbuiten of wil je op een gegeven moment meer dan Access-desktop databases maken dan loop je vast.

ActievX Data Object (ADO) is een generieke schil rondom (bijna) willekeurig welke dataprovider. Flexibeler, i.h.a. krachtiger -met name bij client-server toepassingen)- maar in het specifieke geval van mdb bestanden beperkter in de mogelijkheden. DAO kan ik zowat dromen, dus als ik snel even iets moet doen grijp ik naar DAO, maar noway dat ik het ging leren als ik nu zou moeten beginnen.

offtopic:
even je titel ontcapt. Al die hoofdletters staan zo schreeuwerig

[ Voor 8% gewijzigd door Lustucru op 22-09-2005 20:14 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Topicstarter
Hee bedankt Niesje,
Duidelijk antwoord.
Maar dan nog een vraagje: ik zie ook dingen als querydefs, en zo zag ik wel meer kreten die gebruikt werden om contact te krijgen met een database.
Wat ik nu gebruik zijn dao recordsets voor select's en docmd.runquery en dan gewoon SQL.
Is dat goed of kan dat anders en beter?

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Topicstarter
Sorry dat ik dit weer omhoog kick maar al lezende wordt het me alleen maar verwarender.
Hier staat het e.a. over Jet Databases in combinatie met ADODB.
Het zal wel aan mij liggen maar ik zie de bomen door het bos niet meer.
Ik hoef niet een complete uitleg maar ik snap de verhoudingen niet.
Het boek is daar ook niet duidelijk over.
Ik lees hier verder het e.a. over OLE DB Provider en nu ben ik de draad helemaal kwijt.
Als ik een poging doe om het zelf samen te vatten dan komt het hierop neer:
(aan jullie de vraag om me te vertellen of ik het wel of niet goed begrepen heb)

Er is DAO, die je het beste kan gebruiken als je alleen binnen access databases werkt.
(ook als je die gesplitst hebt?)

Maar ik bergrijp uit het verhaal van Niesje dat ik deze beter kan laten voor wat het is en me op
ADO kan storten. Ik zal voor nu wat simpele databases maken in alleen access, maar dit zal zich al lerende uitbreiden naar samenwerking met Oracle en MS SQL databases. Voor hier op school.
Sync'en met leerling gegevens zal tot de mogelijkheden moeten gaan behoren.

Dus zal ik me gaan storten op ADO.
Dit is een ActiveX component met vele mogelijkheden. Een provider maakt eigenlijk uit waarmee je conctact maakt. Dit kan Oracle zijn, of Excell, of MS SQL enz.
De provider die je specificeert in:
code:
1
2
3
4
ADOBDB.Connection

Connection1.open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
DataSource="C:\Program Files\Ergens\een database.mdb;"


Maar geldt dit ook voor als je (voorlopig) alleen in access zelf werkt.
Ik wil me nu iets aanleren waar ik in de toekomst ook wat aan heb.
Het vreemde is alleen dat ik veel tegenkom over DAO.
(VTC VBA in Access)

Ik zou graag advies willen in welke richting ik het zoeken moet.

bb 8)

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


  • M. Mulder
  • Registratie: Juni 2003
  • Laatst online: 14-08 15:33

M. Mulder

DPC: Team TFC

Ik heb 4 jaar geleden ook voor deze vraag gestaan en ik had toen al ervaring met DAO. Zij gaven toen aan dat ADO veroudert was, echter ben ik toch de ADO weg ingeslagen en ik heb er geen moment spijt van. Ik gebruik ADO binnen mijn Visual Basic programma's. ADO biedt veel meer subtielere objecten, zoals texboxen, comboboxen, dropdowboxen, datagrids enz.
De manier van aanroepen via SQL werkt perfect.

Voor mij alleen ADO.

Wat je al aangaf, het is allemaal zeer lastig wat de terminologieen inhouden m.b.t. de relaties. Ik snap dat ook niet allemaal, maar ik heb inmiddels zeer degelijke datbase aplicaties gemaakt op basis van ADO en aansturing via SQL.


Machiel

Verwijderd

Ik denk dat zowel Access (en interne DAO) en ADO allebei niet meer erg toekomstbestendig zijn. De volgende generatie is .Net met ADO.Net, wat heel erg verschilt van ADO.

Mbt OLEDB: er zijn twee heel bekende open manieren om via een universele laag databases te benaderen, nl. ODBC en OLEDB. OLEDB is nieuwer en sneller, maar niet multi-platform (alleen windows). Daarnaast zijn er voor databases vaak ook speciale libs die zonder zo'n universele tussenlaag werken. Het voordeel van zo'n tussenlaag is wel dat je minder database specifieke code hebt.

Mbt Access zou ik ADO met OLEDB drivers gebruiken zoals je nu doet.

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Topicstarter
op Digihans lees ik dit
ADO code is de beste keuze als u niet-Access gegevensbestanden aan een Access programmabestand wilt koppelen. DAO is de beste keuze als u een Access gegevensbestand aan een Access programmabestand wilt koppelen.

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Verwijderd

Access zelf werkt standaard met DAO ( kijk maar naar de referenties, als je in een codescherm zit ), en dat werkt in access databases erg goed. je KUNT wel ADO gebruiken, maar dan zijn sommige dingen zoals het direct werken met de databasedefinities ( tabledefs, querydefs) een stuk lastiger. ADO heeft hiervoor ook wel functionaliteit ( ADOX, om nog maar eens een afkorting in het topic te storten ), maar die werkt niet optimaal ( toegevoegd tabellen niet zichtbaar in Access, maar wel toegankelijk, en dat soort dingen )

Mijn advies, zo lang je in Access werkt, blijf dan ook lekker bij DAO. Wil je later je database benaderen via andere programmatuur, dan kun je daarin alsnog ADO gaan gebruiken.

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Topicstarter
Duidelijk antwoord.
Al lijkt me dat DAO ook niet al te moeilijk is om te begrijpen.
ik heb tot nu te gewerkt met :
code:
1
2
Public dbase As DAO.Database
Public recset As DAO.Recordset

voor selecties ed.

en

code:
1
    DoCmd.RunSQL ("UPDATE tbl_tabel SET [kolomnaam]=waarde")


is dit de manier om te werken?
(je hoort/leest) zo veel verschillende manieren.

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Verwijderd

Er is met dit soort zaken zal je eerst het object model (welke objecten er zijn, welke methodes en properties ze hebben) moeten leren kennen, en pas daarna leer je te begrijpen wat 'best practices' zijn en waarom.

Verwijderd

bluesbrother schreef op vrijdag 23 september 2005 @ 15:57:
is dit de manier om te werken?
(je hoort/leest) zo veel verschillende manieren.
Standaard komen "Database" en "Recordset" al uit de DAO library, maar het altijd netjes om het op jouw manier te declareren, vanwege de duidelijkheid.

DoCmd.runsql echter is vrij traag, ik gebruik meestal iets zoals :
Visual Basic:
1
2
3
4
5
6
7
dim dbs as database
dim rs as recordset

set dbs = currentdb
dbs.execute("UPDATE tbl_tabel SET [kolomnaam]=waarde")

set rs = dbs.openrecordset("Select * from tbl_tabel")


offtopic:
let op, bovenstaande code is uit mijn hoofd ingetypt en kan fouten bevatten

de werkwijze met eerst een referentie naar de database in een variabele te zetten is vooral efficienter wanneer je meerdere Executes achter elkaar wilt doen.

[ Voor 18% gewijzigd door Verwijderd op 23-09-2005 16:05 ]


  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Topicstarter
Kijk dat soort dingetjes dat
code:
1
docmd.runsql

trager is dan jou oplossing dat kom ik nergens tegen.
Of heb ik verkeerd gezocht. ? :o
Als jullie een webiste hebben waar ik dat soort kennis tegen kan komen
dan houdt ik me aanbevolen. _/-\o_

Ik zal zelf even beginnen:

http://www.access-programmers.co.uk/

http://home.planet.nl/~digihans/pc_help/access/

http://www.dbforums.com/f84

http://www.fontstuff.com/access/index.htm

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Topicstarter
Ik ben er een tijdje op zoek naar geweest maar dit gaf mij wel bijna alle antwoorden op mijn vragen.

http://msdn.microsoft.com.../dnacc2k/html/acchap2.asp

en http://msdn.microsoft.com.../dnacc2k/html/acchap7.asp

Misschien dat jullier er ook wat aan hebben.

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.

Pagina: 1