The Microsoft Access 2013 Runtime enables you to distribute Access 2013 applications to users who do not have the full version of Access 2013 installed on their computers. The Microsoft Access 2013 Runtime Download is available in 38 languages!
Note that due to the many deprecated features in Access 2013, we would recommend developers to stick to the Access 2010 runtime version unless you’re deploying to an environment that has already migrated to Office 2013.
The National Archives and Records Administration (NARA) is the record keeper for the United States. Of all documents and materials created in the course of business by the United States Federal government, only 1%-3% are important enough for legal or historical reasons that they are kept by NARA forever.
To ensure the quality of work performed by their Facilities Management service providers, the National Archives and Records Administration performs both random and targeted inspections of completed work orders.
Inspection findings were documented on paper, which ironically, wasn’t efficient for the NARA. Reports were manually created to generate the service results. This manual process was time consuming and prone to human error.
FMS was selected to create a professional, multiuser system to collect the inspection results electronically and generate a variety of management reports.Within two months, we deployed our solution which offers data entry screens to replicate a variety of existing forms and many new management reports. An intuitive user interface made it easy for users without requiring extensive training. More importantly, we established a solid database foundation to improve NARA processes both today and into the future.
Stores inspection results into a shared database
Increases efficiency and accuracy of the collection and reporting process
Gathers information and performs statistical analysis in ways that were previously not available
Our Professional Solutions Group was recently asked to diagnose a Microsoft Access database experiencing recurring compile errors with code behind a form that looks like this:
If IsNull(Me.Comments) Then
where Comments is not a control on the form, but a field in the form’s RecordSource.
In general, this compiles and runs fine, but on seemingly random occasions while the program is running, it generates a compile error saying that that field was not found. But the field always existed on the form’s RecordSource, so why was this happening?
There are a few ways to avoid this problem:
Change all the Me. to Me! which is the proper way to reference a field in VBA code, if there is no control bound to this field.
Create an invisible text box that assigns its ControlSource to that field, give the text box a different name (e.g. txtComments), and reference the text box in code.
Deploy the database so its compiled state cannot be changed (ACCDE or MDE)
We prefer the use of the invisible text box so that we can reference the control name via the “Me.” syntax rather than “Me!”. The “Me.” syntax is verified when the code is compiled so that a typo with the control name is caught. This is preferable to a runtime error that gets triggered when the user encounters that line of code.
Though we knew how to fix this, we were curious to understand why the compilation wasn’t consistent across users. It also didn’t fail when a specific event occurred. It seemed almost random when the compile error arose. And the form triggering the error seemed perfectly fine with a reference to a field that exists in its RecordSource.
The Real Cause for the Compile Error
Through our own research and help from our Microsoft Access MVP colleagues, we discovered that the compile error was tied to programmatically changing the RecordSource of a form. The change is not necessarily on the form where the compile error is triggered.
Microsoft Access seems to reset its internal list of field references some time after the RecordSource is modified, which triggers the compile error. This explains why some users experienced it and others did not since it depended on whether the user opened a form that changed its RecordSource. It also explained why the error didn’t occur immediately after a RecordSource was modified.
Special thanks to Dirk Goldgar for pointing this out. Hope you never encounter this!
Additional Resources for Database Compile and Field Reference Issues