If your data is stored in Access tables, use DAO.
DAO is the native Access library.
The A in DAO *is* Access.
Er, that would be *lower-case" access, not Access the Microsoft
product -- it's just the generic meaning of access, as in gaining
access to data.
Access itself uses it (e.g. to run its queries.)
I'm not certain about that. At one point this came up in a
discussion with Michael Kaplan, and I think he said that Access
talks directly to Jet, rather than using DAO. If this were not so,
then there'd be no need for a DAO reference. It is true that some
objects that we think of as specifically belonging to DAO are
available without the DAO reference. For instance, CurrentDB and
DBEngine are all properties.methods of the Access Application
object, and available without any reference to DAO.
So, I wouldn't make the claim so strongly as you make it. Access
doesn't need an intervening layer to talk with Jet for certain
operations (remember after all that an MDB file, even a front end,
is a Jet database, and that much of Access itself is written in
Access itself, e.g., wizards and so forth).
When Access 2000 was released, MS did try to get us to switch to
the more generic ADO. That's where the "outmoded" comments
originated. Since that time, ADO has become outmoded as a generic
library, replaced by the quite different ADO.NET.
However, classic ADO is still quite useful for working with non-Jet
data, more specifically, SQL Server.
It's too bad MS completeley mucked up the ADO introduction in
Access. ODBC really is pretty outmoded as a database abstraction
layer, since it isn't up-to-date on a number of features that are
now widely supported in mainstream database engines.
In Access 2003, the DAO library reference came back as a default,
and continues to be so in Access 2007.
Does the default DAO in an ACE read legacy Jet data without
problems? That is, DAO is now somewhat more complicated, as there
are two distinct Jet database engines to support, the traditional
Jet 4.0 lineage, and the new fork for the ACE.
There may be reasons to use ADO if you are connecting to data data
is other sources, but if you use Access tables, DAO lives!
And is now under new development because the Jet database engine (in
its ACE incarnation) is once again in live development.