Corrupt Objects within a Corrupt Microsoft Access MDB

[ Retrieve your data | Corrupt MDBs | AccessMain ]   (Updated 2010/10/23)

Typically forms or reports

Make a backup!

I've personally seen opening a particular form or report causes Access to crash and send an error report to Microsoft.  (Please send the error reports as Microsoft do their best to fix those problems.)

Compacting and repairing problem generally won't find or repair corrupt forms, reports or VBA code.  Compacting and repairing is really only designed to fix up tables and indexes.   I've also personally had a corrupted MDB which you could compact quite nicely but importing or making an MDE would cause it to puke and die.  Also see Decompile or how to reduce Microsoft Access MDB/MDE size and decrease start-up times as this might also be your problem.

The following was posted in the newsgroups "Recently had experience where Access 2K split front- and back-end kept crashing. Suspected a particular form might be the problem, but database Compiled with no errors, and form would open just fine and usually work. As last resort, created new front end and imported everything into it. Compile then found error in the suspect form, which would also not open. Have seen no reference anywhere else to corrupt database causing Compile to "work" when it should fail."

1) Try copying and pasting the form or report.   Click on the form/report, ctrl+C and ctrl+V.  You will be prompted for a new object name.  Put in something like the original name and save it.   If the new form/report works then delete the old one.

2) Try decompiling.  See Decompile or how to reduce Microsoft Access MDB/MDE size and decrease start-up times for more information.

3) Import all the objects into a new MDB. Sometimes Access gets through a ways importing the objects into a new MDB and then pukes.  Ignore that object and continue from the next one and keep on going.  Then import that object, or objects, from a backup.  This can be a pain though because you have to click on each object to import it.  You can't do a shift+click to select a range of objects like you can in Windows Explorer.   Thus you'll need to run through the objects collection in code.

Note:  Access 2003 SP3 can cause this problem.   The solution is a hotfix - Description of the Access 2003 post-Service Pack 3 hotfix package: December 18, 2007.  Unlike previous hotfixes you can download this one right from that KB article.

Tip:  If you have a lot of objects minimize the database container window in the new, empty database before doing the import.  Access can waste a lot of time refreshing the database container window between each object that is imported.

4) The little documented SaveAsText and LoadFromText may help if an object, such as a form or report, is corrupted or otherwise behaving weirdly such as reports taking excessively long to print or never getting to the print preview screen.
At the debug/immediate window type:
        Application.SaveAsText acForm, "MyForm", "c:\form.txt"
You can load the file into a new MDB.
        Application.LoadFromText acForm, "MyForm", "c:\form.txt"

To SaveAsText the entire MDB see Documents the database to a series of text files or FFDBA Save_MDB_Objects_As_Text.

Objects as Text (At the bottom.) This is a MS Access add-in that provides a GUI for the SaveAsText and LoadFromText methods.

[ Retrieve your data | Corrupt MDBs | AccessMain ]

Auto FE Updater   Auto FE Updater distribute new and updated Front End databases to your users with several mouse clicks.

Wrench and gear Granite Fleet Manager - the best designed fleet maintenance tracking and management system available

Comments email Tony  Search Contact Tony's Blog Privacy Policy Table of Contents

Website copyright © 1995-2013 Tony Toews