Всем привет, нужна ваша помощь Имеется локальная БД (Paradox), способ доступа - BDE. БД состоит из единственной таблички. На форме есть компонент CheckListBox, в котором проставлены 12 месяцев. При нажатии на кнопку формируется динамический запрос в БД, который возвращает сотрудников, улетающих в отпуск в указанных месяцах.
| Код | dbQuery.SQL.Clear; dbQuery.SQL.Text:='select * from mems where'; for i:=0 to CheckListBox1.Items.Count-1 do if CheckListBox1.Checked[i] then begin dbQuery.SQL.Add('Date_flight between '+chr(39)+'01.'+inttostr(i+1)+'.2009'+chr(39)+' and '+chr(39)+'31.'+inttostr(i+1)+'.2009'+chr(39)); dbQuery.SQL.Add('OR'); end; dbQuery.SQL.Delete(dbQuery.SQL.Count-1); dbQuery.SQL.Add('order by FIO'); memo1.Text:=dbQuery.SQL.Text; dbQuery.Open;
|
на основании чего формируется динамический SQL-запрос в зависимости от отмеченных меясцев, например:
| Код | select * from mems where Date_flight between '01.1.2009' and '31.1.2009' OR Date_flight between '01.2.2009' and '31.2.2009' OR Date_flight between '01.4.2009' and '31.4.2009' OR Date_flight between '01.6.2009' and '31.6.2009' OR Date_flight between '01.7.2009' and '31.7.2009' OR Date_flight between '01.8.2009' and '31.8.2009' order by FIO
|
Суть в том, что этот запрос работает очень странно. Для некоторых месяцев работает корректно (например, для марта или июля), при других вызывает ошибку "Type mismatch in expression'. а на третьих вообще "Invalid keyword use 'order' " Некоторых дат в таблице пока не содержится (например, январь, февраль), но запрос на январь работает корректно, а на февраль - ошибка. Мистика  Пробовал реализовать запрос через CAST | Код | select * from mems where cast (date_flight as char(10)) containing '%.07.%'
|
говорит "Capability not supported". В общем, нужна ваша помощь  Если есть другие предложения по решению вышепоставленной задачи - буду рад выслушать. |