Jul 03

Inspection Software for the National Archives and Records Administration (NARA)

National Archives and Records Administration (NARA)With the upcoming 4th of July celebrations, we at FMS are proud to have worked with the National Archives and Records Administration (NARA) over the past year to help them better maintain and preserve the important documents of our nation. Here’s what we did in our new case study: Inspection Software for the National Archives and Records Administration (NARA)

About the National Archives

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.

Natonal Archives Building in Washington DC

Background

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.

Problem

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.

Solution

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.

Operational Impact

  • 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
  • Eliminates the need to maintain paper files
Jul 01

Microsoft Access Inconsistent Compile Error for a Field Reference in a Form

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?

Solutions

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.

But Why?

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

For additional tips on Microsoft Access application development, visit our:
Microsoft Access Developer and VBA Programming Help Center

Mar 20

Microsoft Access Query Sorting on Multiple Date or Numeric Fields with Blank Values

Read our new paper: Microsoft Access Sorting on Multiple Date (or Numeric) Fields with Blank Values

Learn how to sort on multiple date fields when null values exist by using a calculated field. By using the IIf function with Is Null, you can easily sort to see the most recent (or oldest) records.

We’ve included information on avoiding the IsNull function to maintain SQL Server compatibility. Additional information and examples are provided to show why using the NZ function (NullToZero) is not equivalent and returns the wrong results.

Microsoft Access QueriesThis new paper is part of our Microsoft Access Query Help Center.

Apr 24

Top Five Tips for Using Combo Boxes on Microsoft Access Forms

Country ListMicrosoft Access combo boxes let you display data for users to select values from predefined lists. Using them effectively simplifies data entry and accuracy.

Brush up on the ComboBox Basics from Microsoft, and check out our Top Five Tips for using Combo Boxes on Microsoft Access forms. Each of them has articles describing them in more detail.

1. Set Important ComboBox Properties

To use combo boxes effectively, learn about the following properties:

* LimitToList: Set this property to Yes to prevent values that are not in your list.
* AutoExpand: Set this property to Yes to automatically select a matching value in the list as you type.
* ListRows: Set this value to a high value so that the drop down shows as many list items as space allows.

2. Properly Validate a ComboBox

Use the ListIndexproperty instead IsNull to properly validate that a valid ComboBox list item is selected.

3. Select the First Item in a ComboBox on a Microsoft Access Form

Use the following syntax to automatically select the first item in a ComboBox when the form loads, or when the value of another control on the form changes:

Me.ControlName = Me.ControlName.ItemData(0)

4. Create Cascading ComboBoxes on Microsoft Access Forms

On a form with multiple ComboBoxes, you may want to make the selection in one ComboBox limit the choices in another ComboBox. To do this, add code to the “AfterUpdate” event of the first control that updates the RowSource property of the second control.

Microsoft Access Cascading Combo Boxes

5. Enter a Zip Code and Auto-Fill the City and State Names

Use Total ZipCode Database from FMS to automatically fill a ComboBox with a list of valid City / State combinations when the user types a zip code.

Microsoft Access Cascading Combo Boxes