У меня есть набор записей ADO, содержащий таблицу продуктов. У меня есть список продуктов, используемых для фильтрации таблицы - динамически строит фильтр, как это (но больше):Получите дополнение отфильтрованных элементов с помощью набора записей ADO
rs.Filter = "productType = 'product A' " _
+ "or productType = 'product B' " _
+ "or productType = 'product C' "
Это работало отлично для меня, я скопировал отфильтрованные строки в отдельную таблицу, все в порядке.
Тогда новые требования к проекту означали, что мне нужно было снять . Очень хорошо, я сделал некоторую булеву алгебру, и запускал тот же самый запрос с противоположным фильтром:
rs2.Filter = "productType <> 'product A' " _
+ "and productType <> 'product B' " _
+ "and productType <> 'product C' "
Это также работало хорошо. Я копирую исключенные элементы в другой рабочий лист, поэтому теперь у меня есть как включенные, так и исключенные элементы.
НО, но новое требование означает, что я должен справиться со специальным случаем - продукт B будет включен только в определенные даты. Теперь, это работает отлично для положительного фильтра, то один, чтобы найти включены пунктов:
rs.Filter = "productType = 'product A' " _
+ "or (productType = 'product B' and expiry = 16/08/2013) " _
+ "or productType = 'product C' "
, но я проблемы с отрицательным фильтром (тот, чтобы найти исключенные элементы). Ниже не допускается из-за restriction on nested OR's in ADO Recordset Filter:
rs2.Filter = "productType <> 'product A' " _
+ "and (productType <> 'product B' or expiry <> 16/08/2013) " _
+ "and productType <> 'product C' "
Есть ли альтернативное решение? . каким-то образом получить дополнение к фильтру (т. е. только строки, которые он исключает)?
Следует подчеркнуть - список продуктов, включенных в систему, динамически создается, он недоступен для меня при написании кода.
'' НЕ (весь фильтр включения) 'разрешено? –