MORE INFORMATION
In Microsoft Access 95 and 97
In Microsoft Access 95 and 97, you can use the
ItemData method to cause a list box or combo box to default to any row. To have the first row selected automatically, add the following code to the OnCurrent event of a form:
Me!<ControlName> = Me!<ControlName>.ItemData(0)
NOTE: When the field names in a combo box are used as column headings the syntax would be as follows:
Me!<ControlName> = Me!<ControlName>.ItemData(1)
In Microsoft Access 2.0
In Microsoft Access 2.0, you can use the
ItemData method to cause a
list box or combo box to default to any row. To have the first row selected
automatically, set the box's
DefaultValue property as follows:
=[<MyCombo>].[ItemData](0)
NOTE: When the field names in a combo box are used as column headings the syntax would be as follows:
=[<MyCombo>].[ItemData](1)
In Microsoft Access Version 1.x
The first method below uses a user-defined Access Basic function, and the
second method uses the built-in
DLookUp() function to display the first value in the list automatically.
Method 1:
The following example demonstrates a sample Access Basic function called
GetFirst() that can be used to find the first item in the underlying
table or query. The function's result can be used by the DefaultValue
property to automatically select the first item in the list.
To create the GetFirst() function, add the following lines to a new or
existing module:
Option Explicit
Function GetFirst (BoundColName As String, RowSource As String)
Dim DB As Database
Dim DS As Dynaset
Set DB = CurrentDB()
Set DS = DB.CreateDynaset(RowSource)
On Error Resume Next
DS.MoveFirst
If Err = 0 Then GetFirst = DS(BoundColName)
End Function
Note that the first argument of the GetFirst() function is the name of
the field that is used as the BoundColumn property for the combo box. The
second argument is the name of the table or query specified in the
RowSource property of the combo box.
The following example demonstrates how to use the GetFirst() function to
automatically select the first employee in the Salesperson combo box on the
Orders form in the sample database NWIND.MDB:
- Open the Orders form in Design view.
- Select the Salesperson combo box. Display the property sheet by
choosing Properties from the View menu.
- Set the DefaultValue property to the following expression:
=GetFirst("Employee ID", "Employee List")
- View the form in Form view.
- From the Records menu, choose Data Entry.
Note that the combo box automatically displays "Buchanan, B.L."
Differences Between GetFirst() and DFirst():
The GetFirst() function is similar to the built-in DFirst() aggregate
(totals) function. However, DFirst() may return unexpected results when
used to find the first item in a list.
If the underlying table or query is indexed, the value returned by DFirst()
will be the first indexed record. Otherwise, DFirst() will return items in
the actual order in which they were entered in the database. Therefore, if
the RowSource property of a combo box is a query that sorts the data by a
non-indexed field, DFirst() may not return the expected value.
For example, if you change the DefaultValue property of the Salesperson
combo box on the Orders form to
=DFirst("[Employee ID]", "Employee List")
the item returned will be "Davolio, Nancy," which is not the first item in
the combo box, but the first indexed item in the Employees table.
Method 2:
This method uses the
DLookUp() function to look up the first record in the list. The expression will be the field referred to in the
BoundColumn property (or the
ControlSource property) of the combo box or list box. The domain will be the same table or query that the combo box or list box uses as its
RowSource property. The optional criteria will not be used so that the
DLookUp() function will return the first record.
The following example demonstrates how to use
DLookUp() to automatically select the first employee in the Salesperson combo box on the Orders form in the sample database NWIND.MDB:
- Open the Orders form in Design view.
- Select the Sales Person combo box. View the property sheet by choosing Properties from the View menu.
- Set the DefaultValue property to the following expression:
=DLookUp("[Employee ID]","Employee List")
- View the form in Form view.
- From the Records menu, choose Data Entry.
Note that the combo box automatically displays "Buchanan, B.L."