Whats the difference between DAO and the Jet Engine

My understanding is JET is the database and DAO is essentialy an API between MS Access and the JetEngine.  Thus I understand that in a module I use DAO as a way of manipulating the data within MS Access.

However, in a form where I am directly placing data into table I am not using DAO.  If JET is an MS Access database and per WIKI there are only 3 methods to manipulate a Jet databse:Jet DLL, the Data Access Objects (DAO) DLL and several external ISAM DLLs.

Thus when working with a form what method am I using to manipulate the data ?  Is it the Jet dll ?  Or when working in the form is the dll not applicable since I am directly linked to the table ?
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

DatabaseMX (Joe Anderson - Microsoft Access MVP)Database Architect / Systems AnalystCommented:
Q:  "Whats the difference between DAO and the Jet Engine"
A: "JET is the database and DAO is essentialy an API between MS Access and the JetEngine"
In other words, just what you stated.

"Thus when working with a form what method am I using to manipulate the data ?"
If there is no code involved wherein you are specifically using DAO eg:
Dim db as DAO.Database
Set db = CurrentDb
 .... the JET is saving / retrieving data for your Form

Boyd (HiTechCoach) Trimmell, Microsoft Access MVPDesigner and DeveloperCommented:
<<... in a form where I am directly placing data into table I am not using DAO ...>>
It is my understanding that Access uses DAO internally to work directly with the JET and  ACE (.accdb format) database engines.   This means that  the record source for objects like forms and  report use DAO when using a JET/ACE database.

Note: With the new ACE (.accdb) database engine there is now also  ACEDAO.


JET is a database engine.  It is used by MS Access as well as other MS elements (DHCP databases as well as the Event Viewer used JET at one time)  SQL Server, Oracle, MySQL, Dbase, Paradox ect all use different database engines.

DAO is a database communication protocol.  Office programs use it to communicate with one another (Access-to-Access, Excel-to-Access, Excel-to-Word)  Programmers in VBA can use it to do the same communications.  It can also be used to communicate with SQL Servers.

ADO is a related protocol.  It does many of the same things that DAO does.  It shares some of the syntax.  At one time, MS was trying to position it to replace DAO.
DAO proved difficult to kill :)

When you are working with a form bound to a table, many things could be going on.
The table could be local, in which case it is likely JET and Access that is handling everything.
Your table could be a linked Access table, in which case DAO is in play
You may have SQL Server tables linked via ADO
You might even have Oracle tables.  ODBC drivers come into play, and probably ADO.

Why do you ask?
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

pbo1Author Commented:
Thanks nick67...I ask bc I was reading John Viescas book MS Access 2003 and in chapter 5 it provides 2 diagrams the application object and the application.Dbengine.. For the application.Dbengine diagram it indicates it is the dao..model so I was getting pretty confused on why they were calling the application.Dbengine the same thing as the dao model..

I feel it is important to get a better hi level understanding of dao and the jet engine for my own knowledge.  I know this probably will not improve my vba skills and i probably shouldn't waste too much time on my dao question, but my curiosity got the better of me...
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database Architect / Systems AnalystCommented:
If you really want the background, you cannot beat this book:


Still the best reference on the subject ... and you can get one used with the CD for < $10

From the Access 2003 help:

The DBEngine object is the top level object in the DAO object model.
The DBEngine object contains and controls all other objects in the hierarchy of DAO objects. You can't create additional DBEngine objects, and the DBEngine object isn't an element of any collection.
Note: When you reference an ODBC data source directly through DAO, it is called an "ODBCDirect workspace." This is to distinguish it from an ODBC data source that you reference indirectly through the Microsoft Jet database engine, using a "Microsoft Jet workspace."  Each method of accessing ODBC data requires one of two types of Workspace object; you can set the DefaultType property to choose the default type of Workspace object that you will create from the DBEngine object. The Workspace type and associated data source determines which DAO objects, methods, and properties you can use.

What does all that mean?
Most times Access takes care of all the communicating.
There are two possible paths that communication can take
You-->Access-->DAO-->Some database  This is ODBCDirect.  If you force this communication path, you have to look after some of the niceties that Access expects.
Chief among them can be things like SQL Server storing true and false as 1 and 0, not -1 and 0 (what has to be handled depends very much on versions)

The other path is
You-->Access-->JET-->DAO, or ADO, or some other DB communication protocol--> some Database
This is a  Microsoft Jet workspace.  JET looks after some of the niceties for you.  On the other hand, JET doesn't talk quite so handily with some other database engines, so maybe this won't work.

Generally speaking, unless you are trying to work with a non-MS database, none of this ever comes up.
Access handles it all beneath the hood.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database Architect / Systems AnalystCommented:
ODBCDirect was deprecated as of A2007 ...

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Access

From novice to tech pro — start learning today.