Filtering MySQL table with C++ Builder 2010
Posted by: Alexej Tatarinov
Date: March 28, 2012 04:57AM

Таблица базы данных на сервере MySQL 5.5 имеет 1 поле даты RegDate,
3 smallint поля кодов исполнителей ManNum1, ManNum2 и ManNum3 и ряд
информационных полей. Программа на 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 на той же базе и в
той же программной среде выполняется без ошибок. В чем дело?

Options: ReplyQuote


Subject
Views
Written By
Posted
Filtering MySQL table with C++ Builder 2010
2321
March 28, 2012 04:57AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.