В дополнение к предложению Альберта, вы можете захотеть сделать эту работу внутри самого запроса, чтобы он был «загружаемым». Для этого вам нужно написать функцию, которая возвращает значение, выбранное в поле со списком в форме. Это было бы что-то вроде этого:
Public Function ReturnMyCriterion() As Variant
DoCmd.OpenForm "dlgGetCriterion", , , , , acDialog
With Forms!dlgGetCriterion
If .Tag <> "Cancel" Then
ReturnMyCriterion = Nz(!cmbMyCombo, "*")
End If
Else
ReturnMyCriterion = "*"
End With
Close acForm, "dlgGetCriterion"
End Function
(при открытии формы с помощью переключателя acDialog код приостанавливается до тех пор, пока форма открыта или видима; чтобы получить значение из поля со списком, необходимо установить для свойства .Visible формы значение False. сделайте это в событии AfterUpdate поля со списком или в кнопке OK. Также нужно, чтобы кнопка «Отмена» установила для свойства .Tag формы значение «Отмена», а затем для свойства формы .Visible было установлено значение False; относительно стандартный подход к работе с диалоговыми формами в Access).
Тогда вы бы сделали критерий в вашем запросе:
Like ReturnMyCriterion()
То есть, если вы хотите вернуть все записи, если в поле со списком не выбрано значение.