Идея для этого типа фильтра заключается в преобразовании значения Null в элементе управления в SQL, что означает отсутствие условий для этого поля. Для этого мы используем функцию Nz и ключевое слово LIKE.
Часть WHERE должна гласить:
WHERE TestInput.[Type of Agreement] LIKE Nz("'" & Forms["Console"].SelectType & "'","'*'") AND
TestInPut.Sponsor LIKE Nz("'" & Forms["Console"].Sponsor & "'","'*'") AND ...
и т. Д. Для каждого поля, которое вы хотите фильтровать. Теперь, если выпадающий список имеет значение Null, он заменяет LIKE '*'
, который возвращает все для этого поля. Если оно заполнено значением, оно заменяет, например, LIKE 'Grant'
. Отсутствие подстановочных знаков (*,?) Означает, что оно фактически запрашивает, чтобы оно было равно.
РЕДАКТИРОВАТЬ: Извините несколько ошибок в этом. Должно быть:
WHERE TestInput.[Type of Agreement] LIKE Nz([Forms]![Console]![SelectType],"*") AND
TestInPut.Sponsor LIKE Nz([Forms]![Console]![Sponsor],"*")