-
Надо отфильтровать таблицу входящей почты, созданную в MySQL и подключенную в таблицу TADOTable c Name = InMailTbl, по исполнителю в интервале дат. Использую следующее значения выражения DM->InMailTbl->Filter: "(ManNum = 12 OR ManNum1 = 12 OR ManNum2 = 12) AND RegDate >= '2011-11-24' AND RegDate <= '2011-12-23'" Поля ManNum имеюь тип Shortint, RegDate - Date. Получаю сообщение: "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом". Если убираю члены для ManNum1 и ManNum2 или члены с RegDate, то вся фильтрация работает нормально и отбирает нужные строки таблицы для разных номеров и интервалов дат. В чем несовместимость параметров понять не могу. Помогите, кто знает! У меня, правда, не Delphy, a C++ Builder 2010, но в них используются те же объекты. Кстати, в С++ Builder6 с Парадоксом все работало нормально.
-
попробуйте в строку сначала запихнуть. потом в InMailTbl->Filter:
и не жалея пробелов между словами. Вспоминается, что раз такое было, когда м/д словами пробел пропустил :)
-
Попробуй только (ManNum = 12 OR ManNum1 = 12 OR ManNum2 = 12) оставь. Если прокатит, то проблема скорее всего в формате даты. Используй параметры.
-
фильтр в ADO не позволяет "сложных" выражений с OR, нужно "раскрыть скобки"
There is no precedence between AND and OR. Clauses can be grouped within parentheses. However, you cannot group clauses joined by an OR and then join the group to another clause with an AND, like this: (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Instead, you would construct this filter as (LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')
и да, дата кстати тоже "неправильная"
> Используй параметры. в фильтрах нету, надо - "не используй TADOTable, используй TADODataSet + запрос + параметры"
-
> (ManNum = 12 OR ManNum1 = 12 OR ManNum2 = 12) кстати ради смеха можно попробовать (в Access работает, в фильтрах не пробовал) - 12 IN (ManNum,ManNum1,ManNum2)
|