MS Access – Why Convert Your Database Into an MDE or ACCDE?

Yet again, another questions that always comes up over and over.

 

What is an MDE/ACCDE database?

So why do we normally recommend that you convert your database (mdb/accdb) into a compile version (mde/accde) before deploying to your end-users?

The short answer is that it minimizes the amount of access the users have to mess around with your database.

 

So how does it work exactly?

An MDE/ACCDE is simply a compiled version of the original MDB/ACCDB.

This means that since it is already compiled, there will be a slight performance benefit.  Also, since it is a compiled version, this ensures that your code is sound.

The main benefits however however are that a compile version is locked down.  Users cannot edit Forms, Reports or VBA code.  Actually, the VBA isn’t even accessible.  That said, Tables, Queries and Macros remain completely unsecured.

 

What They Are Not

As stated above, they do not secure Tables, Queries or Macros in any way so you need to take any necessary steps to restrict your users access to these elements.

AN MDE/ACCDE does not secure your data in anyway!  For this you must secure your back-end by using the Encrypt with Password command  or any other technique of your choosing (be very careful creating homemade encryption solutions!).

 

Warning

MDE/ACCDE files cannot be edited/developed.  You need to keep the originating MDB/ACCDB to be able to continue to develop your database.

 

Final Thoughts on MDE/ACCDE Files

So by distributing your database as an MDE/ACCDE your ensure that your users cannot change your forms, report and VBA.

Now, if you disable the shift-bypass, create a proper AutoKeys macros to disable certain keystrokes, create your own command bar or ribbon and hide the object browser/navigation pane and then convert it into an MDE/ACCDE your can truly minimize any impact your users can have on your application.  If your database is an 2007+ format, you can take one extra step; once you have converted your database into an ACCDE, change the the extension to ACCDR to force it to run in runtime mode locking down even further what your users can do.

 

Making an ACCDE

Per Paulla’s inquiry in the comments below, here are the instructions for actually creating an ACCDE from your ACCDB.

  • Open your accdb
  • Click on the File tab
  • Click on Save As
  • Select the Make ACCDE
  • Click on the Save As button
  • You will the be prompted for the path/filename to use, so navigate and enter the value of your choosing
  • Click Save

Note the VBA must first compile without any issues before being able to create an ACCDE, otherwise the process will fail with an error notification.

10 responses on “MS Access – Why Convert Your Database Into an MDE or ACCDE?

    1. Daniel Pineault Post author

      The short answer is no, BUT there are a few people out there that can. I once needed to do so for a client who had lost the original mdb and contacted Wayne Phillips (he came highly recommend by fellow MVPs) from http://www.everythingaccess.com/. His service was quick and he was very easy to work with. Do note that he requires proof of ownership.

  1. Blake Hawkins

    I really appreciate the post Daniel!

    If you were to leave the database as an .accdb, but you debug>compiled the database before distribution, would the performance difference be non existent compared to a .accde?

    This is against the grain in terms of security, however, I’m trying to push out modular updates to the client’s existing database by exporting modules/forms/etc from a “package_installer.accdb” to the client’s frontend stored on their C drive. I’m doing this to increase update roll out speed, as well as maintaining user settings. (Reports with saved default printers, local settings). However, exporting can only be done into accdb files, as far as I’m concerned.

    1. Daniel Pineault Post author

      Truthfully, if it works for your then I wouldn’t worry too much about it.

      With today’s computers the difference in performance will be very slight, not to worry about in reality. Obviously, you could test the 2 side by side to make a properly informed decision.

      That said, I usually include a user setting table in each of my databases and use a launcher (vbs script typically) to automatically distribute a fresh FE to my users at every launch. I simply relink the table, create a new mde/accde and drop in place for the script to distribute.

  2. Paulla

    The article tells you all about the great benefits of doing the conversion… but no details about *HOW* you do it. Ugh.

    1. Daniel Pineault Post author

      It is a ‘Why’ article after all, not a how-to.

      That said, it is very simple to do:

      • Open your accdb
      • Click on the File tab
      • Click on Save As
      • Select the Make ACCDE
      • Click on the Save As button
      • You will the be prompted for the path/filename to use
      • Click Save

      et voila!

  3. db042190

    Thx Daniel. I’m a little confused. I created an ACCDB, saved it elsewhere as an ACCDE but was able to delete a table from the ACCDE. What am I missing?

    1. Daniel Pineault Post author

      As I stated in the article:

      That said, Tables, Queries and Macros remain completely unsecured.

      So, yes, users (or you in this case) can fully interact with tables, and even delete them. It has always been an aspect of mde/accde files that I’ve never understood, but it is what it is!

  4. db042190

    if all i want to do is learn from over 50 databases in our company what the reports, tables and forms look like, is asking for read only on a share path with accde’s going to do it? i’m not an access guy but am assuming that i wouldn’t have to run anything to see meta data about these 3 things.

    1. Daniel Pineault Post author

      It depends on what and how you do things. That said, normally, when using any Access database you need full permissions (Read, Write & Delete – this is because of the lock file that may need to be created) on the folder housing the database file you wish to interact with.