Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.34.85] |
|
Сообщ.
#1
,
|
|
|
Таблица базы данных на сервере MySQL 5.5 имеет 1 поле даты RegDate,
3 smallint поля кодов исполнителей ManNumM, ManNum1M и ManNum2M и ряд информационных полей. Программа на C++ Builder 2010, связь с базой данных идет через MySQL ODBC 5.1 Driver и компонент C++ TADOTable. Надо отфильтровать записи по исполнителю в интервале дат, причем нужный исполнитель может оказаться в любом из трех полей ManNum. Фильтр Filter = String("ManNumM = '") + ManNum + String("' OR ManNum1M = '") + ManNum + String("' OR ManNum2M = '") + ManNum + "'"; и фильтр Filter = String("(ManNumM = '") + ManNum + String("') AND RegDate >= '") + FormDateString(BegDate) + String("' AND RegDate <= '") + FormDateString(EndDate) + "'"; успешно работают, а фильтр Filter = String("(ManNumM = '") + ManNum + String("' OR ManNum1M = '") + ManNum + String("' OR ManNum2M = '") + ManNum + String("') AND RegDate >= '") + FormDateString(BegDate) + String("' AND RegDate <= '") + FormDateString(EndDate) + "'"; вызывает сообщение об ошибке "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом" Во всех трех фильтрах используются одни и те же аргументы. Фильтр, вызывающий ошибку, имеет значение: "(ManNumM = '24' OR ManNum1M = '24' OR ManNum2M = '24' ) AND RegDate >= '2012-02-02' AND RegDate <= '2012-03-26'" SQL запрос с таким же значение фильтра в выражении Where на той же базе и в той же программной среде выполняется без ошибок. В чем дело? Как заставить фильтр работать? |