Access: Default forms and reports

Default forms and reports

Access provides a way to set up a form and a report, and nominate them as the template for new forms and reports: Tools | Options | Forms/Reports. That’s useful, as it lets you create forms and reports quickly to your own style.

However, these forms/reports do not inherit all properties and code. You will get a better result if you copy and paste your template form or report in the database window. The form created this way inherits all properties and event procedures.

It will take you 30-45 minutes to set up these default documents. They will save 5-15 minutes on every form or report you create.

A default form

Create a new form. If you normally provide navigation or filtering options in the Form Header section, display these sections (Form Header/Footer on View menu) and drag them to the appropriate height. In addition to your visual preferences, consider setting properties such as these:

Allow Design Changes Design View Only Disallow runtime changes.
Allow PivotTable View No Disallowing these views prevents tinkerers from trying them from the toolbar or View menu.
Allow PivotChart View No
Width 6? Adjust for the minimum screen resolution you anticipate.

Now comes the important part: set the default properties for each type of control.

Select the Textbox icon in the Toolbox. The title of the Properties box reads, “Default Text Box”. Set the properties that new text boxes should inherit, such as:

Special Effect Flat Whatever your style is.
Font Name MS Sans Serif Choose a font that will definitely be on your user’s system.
Allow AutoCorrect No Generally you want this on for memo fields only.

Repeat the process for the default Combo Box as well. Be sure to turn Auto Correct off – it is completely inappropriate for Access to correct items you are selecting from a list. Set properties such as Font Name for the default Label, Command Button, and other controls.

Add any event procedures you usually want, such as:

  • Form_BeforeUpdate, to validate the record;
  • Form_Error, to trap data errors;
  • Form_Close, to ensure something (such as a Switchboard) is still open.

Save the form. A name that sorts first makes it easy to copy and paste the form to create others.

A default Continuous Form

Copy and paste the form created above. This form will be the one you copy and paste to create continuous forms.

You have already done most of the work, but the additional properties for a continuous form might include:

  • Set the form’s Default View property to Continuous Forms.
  • For the default Text Box, set Add Colon to No. This will save removing the colon from each attached label when you cut them from the Detail section and paste them into the Form Header.
  • If your continuous forms are usually subforms, consider adding code to cancel the form’s Before Insert event if there is no record in the parent form.

Create other “template forms” as you have need.

A default report

The default report is designed in exactly the same way as the forms above. Create a blank report, and set its properties and the default properties for each control in the Toolbox.


  1. Set the default margins to 0.7? all round : File | Page Setup | Margins. (Copes with the Unprintable area of most printers.) 
  2. Set the report’s Width to 6.85?. (Handles Letter and A4 with 1.4? for margins.) 
  3. Show the Report Header/Footer (View menu). 
  4. Add a text box to the Report Header section to automatically print the report’s caption as its title. Its Control Source will be:
  5. Add a text box to the Page Footer section to show the page count. Use a Control Source of:
    =”Page ” & [Page] & ” of ” & [Pages]
  6. Set the On No Data property to:

The last suggestion avoids displaying “#Error” when the report has no data. Copy the function below, and paste into a general module. Using the generic function means you automatically get this protection with each report, yet it remains lightweight (no module) which helps minimize the possibility of corruption. The code is:

Public Function NoData(rpt As Report)
    'Purpose: Called by report's NoData event.
    'Usage: =NoData([Report])
    Dim strCaption As String 'Caption of report.
    strCaption = rpt.Caption
    If strCaption = vbNullString Then
        strCaption = rpt.Name
    End If
    MsgBox "There are no records to include in report """ & _
        strCaption & """.", vbInformation, "No Data..."
End Function


You will quickly discover these templates not only save time, but help provide a consistency in style and functionality throughout your application. One of the first things you do when creating a new database will be to import your template forms and report

Leave a Reply

Your email address will not be published. Required fields are marked *