This article was previously published under Q287658
Moderate: Requires basic macro, coding, and interoperability skills.
This article applies to a Microsoft Access database (.mdb) file or to a Microsoft Access database (.accdb) file.For a Microsoft Access 2000 version of this article, see 209537.
This article shows you four methods of moving to a specific record based on selection from a combo box. The methods are as follows:
In the AfterUpdate event of a combo box, execute code that uses the FindFirst method.
In the AfterUpdate event of a combo box, call a macro that requeries the Filter property of a form.
Use a Form/Subform, with a combo box on the main form, and the data in the subform, bound by the LinkMasterFields and LinkChildFields properties of the subform control.
Base the form on a query that joins two tables, and then use the AutoLookup technique to bind a combo box to the field that controls the join.
These four methods are outlined in the "More Information" section of this article and are based on the Northwind sample database.
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. CAUTION: If you follow the steps in this example, you modify the sample database Northwind.mdb. You may want to back up the Northwind.mdb file and follow these steps on a copy of the database.
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
Note These methods can also apply to text boxes.
Use the AutoForm: Columnar Wizard to create a new form that is based on the Products table, and then save the form as frmComboTest.
To do this in Microsoft Office Access 2003 and earlier versions of Access, follow these steps:
In the Database window, click Forms under Objects.
Click New on the Database window toolbar.
In the New Form dialog box, click AutoForm: Columnar, select Products in the drop-down list, and then click OK.
Save the form as frmComboTest.
To do this in Microsoft Office Access 2007, follow these steps:
On the Create tab, click More Forms in the Forms group, and then click Form Wizard.
In the New Form dialog box, click Form Wizard, select the Products in the drop-down list, and then click OK.
In the Form Wizard dialog box, select the fields that you want to see in the new form, select the Columnar option to set the layout of the form, and then click Finish.
Save the form as frmComboTest.
Use the Combo Box Wizard to add an unbound combo box. To do this, follow these steps:
Open the frmComboTest form in the Design view.
In the toolbar, make sure that Control Wizards is selected.
Note In Access 2007, make sure that Control Wizards is selected in the Controls group on the Design tab.
In the toolbar, click Combo Box, and then click on the frmComboTest form.
Note In Access 2007, click Combo Box in the Controls group on the Design tab, and then click the frmComboTest form. In the Choose Builder dialog box, click Combo Box Wizard, and then click OK.
In the Combo Box Wizard dialog box, select the Find a record on my form based on the value I selected in my combo box option, and then click Next.
Include the ProductID and ProductName fields, and then click Next.
The Combo Box Wizard creates an event procedure similar to the following:
Private Sub Combo0_AfterUpdate() ' Find the record that matches the control. Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[ProductID] = " & Str(Nz(Me![Combo20], 0)) If Not rs.EOF Then Me.Bookmark = rs.BookmarkEnd Sub
View the frmComboTest form in Form view.
Notice that when you choose a product name in the combo box, you are moved to the record for the product that you selected.
Use the AutoForm: Columnar Wizard to create a new form that is based on the Products table, and save the form as frmComboTest2.
Note See the steps that are mentioned in the step 1 of Method 1.
In the property sheet for the frmComboTest2 form, set the Filter property on the Data tab as follows:
[ProductName] = Forms![frmComboTest2]![cboLookup]
Add an unbound combo box named cboLookup, and then set the properties of the control as follows: