If you bind the combobox to the control you need, and don't even bother setting it's Rowsource until you trigger the GotFocus Event of the Combobox, it should work fine. Here is a sample of code that I used to set the rowsource of a combobox based on a value.
If IsNull(Me.TagNumber) Then
Me.TagNumber.SetFocus
Else
If IsNull(Me.InvCode) Then
MsgBox$ ("You must enter a valid Inventory Code")
DoCmd.CancelEvent
Else
Dim strCases, strSQL As String
strCases = Me.InvCode
Select Case strCases
Case "RM"
strSQL = "SELECT [Raw Material].[invpart#],[Raw Material].[ListName] FROM [Raw Material] ORDER BY [Raw Material].[invpart#];"
Me.cmbPartNumber.RowSource = strSQL
Me.cmbPartNumber.ColumnWidths = "1 cm; 10cm"
Case "WIP"
strSQL = "SELECT [Prod-Operations].AnconNumber, [Prod-Operations].[invpart#] FROM Products INNER JOIN [Prod-Operations] ON Products.[InvPart#] = [Prod-Operations].[InvPart#] WHERE [Products].[Current]=True and [Prod-Operations].[anconnumber] is not null ORDER BY [Prod-Operations].[anconnumber];"
Me.cmbPartNumber.RowSource = strSQL
Me.cmbPartNumber.ColumnWidths = "2 cm; 6cm"
Case "FG"
strSQL = "SELECT [Products].[invpart#],[Products].[PartDesc] FROM Products WHERE [Products].[Current]=true ORDER BY [Products].[invpart#];"
Me.cmbPartNumber.RowSource = strSQL
Me.cmbPartNumber.ColumnWidths = "4 cm; 4cm"
Case "VOID"
Me.cmbPartNumber.Value = "VOID"
Case Else
End Select
Me.cmbPartNumber.RowSource = strSQL
End If
End If
This checks for an Inventory code, and changes the rowsource based on that value. it would be a simple thing to add a field name parameter to the SQL string
Duane Barker