When you are working with relational data (related data that is stored in separate tables) in Access, you often need to view multiple tables or queries on the same form. For example, you might want to see customer data from one table and information about customer orders from another table at the same time. Subforms are a convenient tool for doing this, and Access provides several ways to help you create subforms quickly.
A subform is a form that is inserted in another form. The primary form is called the main form, and the form that is enclosed in form is called the subform. A form/subform combination is sometimes referred to as a hierarchical form, a master/detail form, or a parent/child form.
Subforms are especially effective when you want to show data from tables or queries that have a one-to-many relationship. A one-to-many relationship is an association between two tables in which the primary key value of each record in the primary table corresponds to the value in the matching field or fields of many records in the related table. For example, you can create a form that displays employee data, and contains a subform that displays each employee's orders. The data in the Employees table is the "one" side of the relationship. The data in the Orders table is the "many" side of the relationship — each employee can have more than one order.
1. The main form shows data from the "one" side of the relationship.
2. The subform shows data from the "many" side of the relationship.
The main form and subform in this kind of form are linked so that the subform displays only records that are related to the current record in the main form. For example, when the main form displays Nancy Freehafer's information, the subform displays only her orders. If the form and subform were unlinked, the subform would display all the orders, not just Nancy's.
The following table defines some of the terminology that is associated with subforms. Access will handle most of the details if you use the procedures in this article, but it is helpful to know what is occurring behind the scenes if you need to make modifications later.
The control that embeds a form into a form. You can think of the subform control as a "view" of another object in your database, whether it is another form, a table, or a query. The subform control provides properties which allow you to link the data displayed in the control to the data on the main form.
Source Object property
The property of the subform control that determines what object is displayed in the control.
A simple display of data in rows and columns, much like a spreadsheet. The subform control displays a datasheet when its source object is a table or query, or when its source object is a form whose Default View property is set to Datasheet. In these cases, the subform is sometimes referred to as a datasheet or subdatasheet instead of as a subform.
Link Child Fields property
The property of the subform control that specifies which field or fields in the subform link the subform to the main form.
Link Master Fields property
The property of the subform control that specifies which field or fields on the main form link the main form to the subform.
Use the following table to determine which procedure is most appropriate for your situation.
Recommended procedure
You want Access to create both a main form and a subform, and to link the subform to the main form.
You want to use an existing form as the main form, but you want Access to create a new subform and add it to the main form.
You want to use an existing form as the main form, and you want to add one or more existing forms to that form as subforms.
This procedure creates a new form and subform combination by using the Form Wizard. This is also the quickest way to get started if you have not already created the forms that you want to use as the main form or the subform.
The box in the lower portion of the form diagram represents the subform.
Note: If the wizard does not ask How do you want to view your data?, that means that Access did not detect a one-to-many relationship between the tables or queries that you selected. The wizard will continue, but Access will not add a subform to the form. You might want to click Cancel and examine your table relationships before you continue.
Use this procedure to add one or more subforms to an existing form. For each subform, you can choose to have Access create a new form or use an existing form as the subform.
Use this procedure if you want to use an existing form as a main form, and you want to add one or more existing forms to that form as subforms.
If the previous test does not work, Access was unable to determine how to link the subform to the main form, and the Link Child Fields and Link Master Fields properties of the subform control are blank. You must set these properties manually by doing the following:
Tip: If you do not see the field that you want to use to link the forms, you might need to edit the record source of the master form or child form to help make sure that the linking field is in it. For example, if the form is based on a query, you should make sure that the linking field is present in the query results.
If you want to make design changes to a subform while you are working on its main form in Design view, you can open the subform in its own window:
When you add a subform to a form, the subform/subreport control displays the subform according to the subform’s Default View property. This property can be set to the following values:
When you first create a subform, this property may be set to Continuous Forms or perhaps Single Form. However, if you set the Default View property of a subform to Datasheet, then the subform will display as a datasheet on the main form.
To set the Default View property of a subform:
Note: If the view you want to use is not in the list, make sure the “Allow…View” property for the view is set to Yes. For example, if you want to specify Datasheet as the default view for the form, make sure that the Allow Datasheet View property is set to Yes.
It is not always necessary to create a separate form object to display related data. For example, if you are working on a form in Layout view or Design view and you drag a table or query from the Navigation Pane to the form, Access creates a subform/subreport control that displays the data in that object. The object’s Default View property determines how the data is displayed. Usually, this is set to Datasheet view, but you can also set the Default View property of a table or query to Single Form, Split Form, or Continuous Forms, giving you more flexibility in displaying related data on forms.
Note: Changing the Default View property for a table or query determines how it is displayed whenever it is opened, whether you open it from the Navigation Pane or view it in a subform/subreport control. Because changing the view settings for a table can sometimes cause confusion when opening the table from the Navigation Pane, we recommend using a query for this procedure instead of a table.