front end and back end



I just learned that it is efficient that split mdb to front end and
back end database.

I just wonder that does it mean that front end and back end
communicate with SQL string and result set to reduce network traffic?

Does it mean that query should store on the backend, because it will
be faster front end sends a short query name instead of SQL string?

Are there any other benefits?

Your information is great appreicted,


Tony Toews and Albert Kallal have lots of information about the benefits of
splitting applications at

There's no benefit to be gained by putting the queries in the back-end. It's
the front-end that runs the queries, not the back-end.

Doug Steele, Microsoft Access MVPhttp://I.Am/DougSteele
(no e-mails, please!)

- Show quoted text -

Thanks for the link and information,
Does it help application performance?

it seems that the above links do not mention the performance.

Thanks again,


If you are asking about performance difference based on the query being in
the fe or the be, the fe will be faster.
To expand a bit on the environment, Database engines like SQL Server,
Oracle, Sybase, etc are Client/Server database engines. That means the logic
to handle data requests runs in an instance of the database engine on the
server. Therefore, less data has to be moved accross the network. The
Client (Front End) only sends the information the database engine needs to
satisfy the data request. The manipulation of the data happens at the server
level and if records need to be returned, only the requested records are

Jet (the database engine used by Access) is a File/Server database engine.
That is, no logic runs on the server. The server is only used to store the
Back End mdb file that contains the tables and relationships. All logic is
running on the Client (the user's computer). So when you execute a query,
the Front end reads the query, evaluates it, and passes the request to Jet.
Jet the reads the data in the mdb file on the server and first returns the
index values from the table(s) in the Back End and uses the values to
determine which records to retrieve. This means the index values are first
passed accross the network, then the actual data is passed across the
network. If the query is stored in the Back End mdb, Access first has to
retrieve the query accross the network to pass it to Jet. This is an extra
network trip.

So, the short of it is the only objects that should be in the Back End mdb
are tables, indexes, and relationships. All forms, reports, macros, modules,
and DAP's should be in the front end.

Douglas J. Steele

Does what help application performance? Splitting the database? No. In fact,
it can cause poorer performance, but the other benefits outweigh that.

Tony does talk about it at

Doug Steele, Microsoft Access MVP

(no e-mails, please!)

Thanks for the link and information,
Does it help application performance?

it seems that the above links do not mention the performance.

Thanks again,

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question