This article lists four different methods of moving to a specific record
based on a combo box selection.
Method 1: In the AfterUpdate property of the combo box, call a macro
using the FindRecord action.
Method 2: In the AfterUpdate property of the combo box, call a macro
using the ApplyFilter action.
Method 3: Use a Form/Subform, with the combo box in the main form and
the data in the subform, bound by the LinkMasterFields and
LinkChildFields properties.
Method 4: Base the form on a query that joins two tables and bind the
combo box to the field that controls the join, using the
AutoLookup technique.
These four methods are outlined in the "More Information" section and are
based on the sample database Northwind.mdb (or NWIND.MDB in Microsoft
Access 2.0 or earlier).
The following table compares the features (benefits and drawbacks) of
the four methods:
Method Number: 1 2 3 4
---------------------------------------------
Requires no code/macros x x
Saves on subforms x x x
Can scroll to other records x x x
Does not require a query x x x
Can edit records x x x
Create a form called frmComboTest based on the Products table, and set
the form's DefaultView property to Single Form.
Add an unbound combo box by using the Control Wizard. (To use the
Control Wizard, make sure that the Control Wizards button is pressed in
on the toolbox before you create the combo box.) In the Control Wizard
dialog box, follow these steps:
Click the "Find a record on my form based on the value I selected in
my combo box" button, and then click Next.
Include the ProductID and ProductName fields, and then click Next.
Click Finish.
The Control Wizard creates an event procedure similar to the following:
Sub ComboNN_AfterUpdate()
'Find the record that matches the control.
Me.RecordsetClone.Findfirst "[ProductID] = " & Me![ComboNN]
Me.Bookmark = Me.RecordSetClone.Bookmark
End Sub
View the frmComboTest form in Form view. Note that when you choose a
product name in the combo box, you are moved to the record selected.
(NOTE: This event procedure can also be used in Microsoft Access 2.0.)
Create a form called frmComboTest based on the Products table, and set
the DefaultView property to Single Form.
Add the following text box to the form:
Text Box
------------------------
ControlName: ProductID
ControlSource: ProductID
Visible: Yes
NOTE: Type a space between Product and ID in the ProductID field
(Product ID) in Microsoft Access 2.0 and earlier.
NOTE: Include at least the ProductID field on the new form. However,
additional fields may help to illustrate that you have changed
records based on the value selected in the combo box.
Add an unbound combo box called cboLookup, and set the control's
properties as follows. The combo box can be located anywhere on the
form, but preferably in the form header or footer.
View the frmComboTest form in Form view. Note that when you choose a
product name in the combo box, you are moved to the record selected and
the appropriate ProductID is displayed.
NOTE: An example of this method is illustrated with the Products And
Suppliers form in NWIND.MDB in Microsoft Access 2.0.
Add an unbound combo box called cboLookup, and set the control's
properties as follows. The combo box can be located anywhere on the
form, but preferably in the form header or footer.
The ProductID field (or Product ID in Microsoft Access 2.0 or earlier) is
the bound field in the combo box. While the combo box displays the
ProductName information, it is bound to (or, holds internally) the value of
the ProductID.
NOTE: This method is similar to the Suppliers form in NWIND.MDB in
Microsoft Access 2.0, which uses the buttons to filter records from A to Z.
Also, see the Alpha Apply Filter Buttons macro.
NOTE: If you are using Microsoft Access 2.0 or earlier, set the
ColumnWidths property to the following value: 0";0";0";2".
Create a second form based on the Products table to use as a subform,
and set the form's DefaultView property to Single Form.
Add the following text box to the form:
Text Box
------------------------
ControlName: ProductID
ControlSource: ProductID
Visible: Yes
NOTE: Type a space between Product and ID in the ProductID field
(Product ID) in Microsoft Access 2.0 and earlier.
NOTE: Include at least the ProductID field on the new form. However,
additional fields may help to illustrate that you have changed records
based on the value selected in the combo box.
Save the form, and then use it to create a subform control on the first
form by dragging it from the Database window to the detail section of
the first form.
By changing the value in cboLookup, Microsoft Access ensures that the
records in the subform match the combo box.
The Orders form in Northwind.mdb in Microsoft Access 97 and 7.0 (or
NWIND.MDB Microsoft Access 2.0 or earlier) illustrate this method. The
Order Details subform is related by the LinkMasterFields and
LinkChildFields properties.
Create a table called tblProductSelect, containing a single field
ProductID (or Product ID in Microsoft Access 2.0 and earlier). Set the
Data Type to Number and the Field Size to Long Integer. A primary key
is not necessary. Also, you should add no records to this table.
Create the following query called qryProductSelect, based on a join
between the ProductID fields of the tblProductSelect and Products
tables. Include the following attributes in the query:
Query: qryProductSelect
-----------------------------------------------
Field: ProductID
Table Name: tblProductSelect
Show: X (checked on)
Field: <any other fields you are interested in>
TableName: Products
Create a form based on qryProductSelect, and add all fields. You must
add at least the ProductID field.
Delete the text box control for ProductID and recreate it as a
combo box, as follows:
For more information about AutoLookup queries, type "AutoLookup" in the
Office Assistant, click Search, and then click to view "About AutoLookup
queries that enter data automatically."
For more information about referencing controls on a form, type
"Identifiers" in the Office Assistant, click Search, and then click to view
"Use values in expresions."
For more information about using the Control Wizard, type "control wizard
find record" in the Office Assistant, click Search, and then click to view
"Find a record by selecting a value from a list."
For more information on how to use the Filter By Form technique, type
"Filter By Form" in the Office Assistant, click Search, and then click to
view "Create a Filter in a Table, Query, or Form."
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.