Assuming that documentation was produced for the release of Office
2000, that information is EIGHT YEARS OLD.
MSDN articles that are archived content (e.g. some I've seen relating
to Jet 3.51) are marked thus. That article remains the best reference
resource for Access SQL DDL. The Access 2007 Help contains far too
many inaccuracies as regards Access SQL syntax
Microsoft has changed its tune. That is obvious by the way they've
changed the default references in newly created databases.
Not as obvious as saying, "In previous versions of Access, Data Access
Objects (DAO) was the primary data access method. That has now
changed. Although DAO is still supported, the new way to access data
is with ADO." Show me an article that says "We've changed our tune
about ADO in favour of DAO" as explicitly as that!
ADO *never* made any sense for Jet data,
and anyone who understands what a database abstraction layer is
should see that (ADO is a database abstraction layer; DAO is an
interface to a particular database engine
Anyone who uses the SQL language understands that abstraction is a
good thing! The point of having an optimizer is that I use SQL to tell
it *what* I want and the optimizer uses its knowledge of the data
engine to determine *how* to achieve this. Both DAO and DAO must go
via the optimizer, that's abstraction.
DAO is faster than ADO but this is only noticeable in, what, less than
one percent of SQL operations across all Access users? If I told you
something could be achieved even faster than DAO by cracking the file
with a hex editor, would this be even better than an interface? Would
you use it in production code?
Microsoft made a decision (not on logic, but on marketing) to leave
certain new Jet 4 features out of DAO and put them in ADO, instead.
That is a flaw in MS's strategy, not in DAO.
MS's strategy may have been the cause but a deficient DAO is a very
real result.
Now that Jet is again a live development platform, I expect the
ACCDB version of DAO to gain lots of new features to keep up with
the development of the ACCDB Jet engine.
I expected it too but they didn't deliver, did they. Do you not see
that DAO (largely) skipped a step, let's call it the Jet 4.0? Why do
you think MSFT will ever catch up this step if they didn't do it for
Access2007? Also consider it is not just support for engine
functionality that DAO lacks, it's the enhanced properties/methods/
events/objects put into ADO still lacking in DAO (not to mention the
fundamental flaws in the DAO object model which one must code around
to prevent memory leaks etc).
And there are things in DAO that ADO can't do (hence the need for
JRO).
We've been here before, David. JRO is part of ADO. But yes, even when
you consider ADO as a whole there are some things that DAO can do that
ADO can't. For the overwhelming majority if Access/Jet engine
functionality both DAO and ADO do it equally well, so it's a lifestyle
choice which one you use.
[ADODB] lacks features that require
you to use *two* external libraries instead of one.
DAO lacks features that require one to use ADODB!
ADO is slower than DAO for Jet data.
Granted but, as before, for the majority of operations for the
majority of users it will make no difference. Denormalizing sometimes
gives better performance but to always denormalize would be the wrong
conclusion and some would say that the cost of denormalizing is never
justified (as I do with DAO and its flaky object model).
It's not native
to the db engine.
To employ a Fentonism, who gives a rat's arse? That's like telling a
father that there's nothing like a mother's love.
It makes *no* sense whatsoever to use ADO for Jet except for the
small handfull of features that Microsoft chose to put in ADO and
not in DAO 3.6.
So, put another way, there is some sense in using ADO, therefore
agreeing that "ADO offers no advantage" is a misstatement.
Jamie.
--