Ну, и чтобы, как говориться, два раза не вставать, поправьте, пожалуйста, давний баг со смешанным фильтром в EhLibADO (т.е. множественным и одинарным или множественным и множественным в разных полях).
Как воспроизвести:
1. Запускаем пример Demos\DBGridEh.SortNFilter.ADOQuery\Project1.dpr
2. Нажимаем на кнопку "Filter is on Server", после чего надпись на ней изменяется на "Filter is on Client"
3. В сетке в стоке фильтра в поле "CustNo" вводим "=9" (без двойных кавычек) и нажимаем Enter
4. Всё отлично фильтруется
5. В сетке в стоке фильтра в поле "OrderNo" вводим "in(209,7)" (без двойных кавычек) и нажимаем Enter
6. Получаем вышеописанную ошибку
Это происходит из-за особенностей фильтрации набора данных в ADO, который наглядно описан
здесь.
Вот выдержка из вышеуказанной статьи:
* Приоритет между AND и OR не существует. Предложения могут быть сгруппированы в круглые скобки. Однако нельзя сгруппировать предложения, соединенные OR, а затем объединить группу с другим предложением с оператором AND, как в следующем фрагменте кода:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
* Вместо этого этот фильтр следует создать так:
(LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')
Т.к. баг давний (точнее изначальный), то исправьте, пожалуйста, сначала баг с TADODataSet, описанный постом выше, а потом, если будет время, то и этот.
Заранее, спасибо!