DAO is an older technology developed as Visual Basic progressed to VB5. It is an interface to the Jet database engine used in VBA and in VB.
It was supplemented by RDO which provided an interface to other kinds of databases.
In the mid to late 1990s Microsoft began working on a replacement for DAO and RDO. A lot of new non-VBA programming environments began cropping up (VBScript, JScript, VFoxPro began to broaden, VJ++, etc.) and the need for a generalized data access technology was seen too.
When VB6 was released ADO still lacked many capabilities, but at the 2.0 level it was complete enough for some purposes.
ADO Compared with RDO and DAO
In general, it's probably too early in the evolution of ADO to migrate most DAO applications (except possibly ones using ODBCDirect) to ADO right now, since ADO doesn't currently support data definition (DDL), users, groups, and so forth. If you use DAO only for client-server applications and don't rely on the Jet database engine or use DDL, however, then you can probably migrate to ADO now. Eventually, Microsoft will provide an ADO DDL component to aid in DAO-to-ADO migration and provide generic DDL support for OLE DB providers.
That was late 1997 though. By the time 1999 rolled around ADO 2.1 was established and it addressed many of these limitations. Very soon ADO 2.5 came out (and shipped with Windows 2000) and became the baseline release of ADO up until today. ADO 2.5 was pretty much feature-complete, consisting of not only ADO itself but also ADOX, ADO MD, and JRO (a Jet supplement to ADO).
Since ADO 2.5 there have been a number of refinements and some important minor features, but basically ADO 2.5 is the core level of functionality. Nothing earlier is discussed much anymore.
ADO History.
One major advantage of ADO for relational database access was an escape from the non-performant world of ODBC, an ancient Microsoft low level data access technology. This was replaced by more the powerful and versatile OLE DB Provider approach, which can use more efficient and more flexible client to database server communication and is not limited to relational datastores.
There is an adapter layer Provider called MSDASQL and it is the default Provider. It is there as a shim between ADO and old-style ODBC drivers for compatibility.
The only people who should be using DAO are probably those still migrating VB5 programs to VB6 and those supporting VB6 programs still bound to the old technology. MS Access 2007 breathed some new life into DAO for VBA programs, but as far as I know this only applies to VBA hosted in Access 2007.
VB6 was a transitional release of Visual Basic. Because of this there are some controls that only work with DAO and others that only work with ADO, and a number of controls that can work with either for simple data binding.
We never did get a real VB7, VB8, etc. that would most likely have phased out internal support for DAO entirely. For VB6 programming DAO may remain viable if care is observed (try to use DAO 3.6, the final release circa 1999). There are some issues with running VB6 DAO programs on WinXP64 and Vista64. It may even be impossible, but you might get the 32-bit DAO 3.6 to install and run under WOW64 on those OSs.
DAO is pretty much limited to working with Jet MDBs and perhaps with ACE ACCDBs (Access 2007) if you install the necessary Office 2007 components. DAO does allow a sort of limited access to ODBC "pass through" tables to reach other relational databases too.
RDO is pretty much dead.
ADO still does not offer 100% of the functionality that DAO provides for Jet MDBs, but the gap is pretty narrow. ADO can also be used to do things never imagined with DAO.
The controversy over DAO vs. ADO continues to this day, more than 10 years after VB6 was released.