Я могу дать общий ответ, который может потребовать некоторого массажа, чтобы начать работать в VBA. Вы можете использовать гибкий подготовленный оператор, например, такой:
SELECT *
FROM Filter
WHERE
(contractor LIKE ? OR contractor IS NULL) AND
(size_sec LIKE ? OR size_sec IS NULL) AND
(ID_NOC = ? OR ID_NOC IS NULL);
Для каждого из заполнителей ?
вы должны либо связать значение из комбинированного списка, если оно определено, либо просто связать NULL
в противном случае. Например, для заполнителя contractor
вы должны связать op
, если определено, иначе NULL
. Этот подход работает так: если заданный критерий равен NULL
, он игнорируется. Таким образом, если у вас есть только одно из трех значений, доступных в выпадающем списке, то только оно будет использоваться для фильтрации в предложении WHERE
.