|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
SQL запрос, отбор по дате
Доброго времени суток!!!
Итак задача ... запрос из таблицы (dbf) отбор по полям типа Date и соединяюсь через ADO. Задаю значение параметру, но при выполнении ошибку выдает... Параметр такойто не обнаружен.... такая же ситуация в логическими полями. Код:
ADOQuery1.Active:=false; ADOQuery1.Parameters.ParamByName('de').Value:=DateTimePicker1.Date; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select date'); ADOQuery1.SQL.Add('from mdocm'); ADOQuery1.SQL.Add('where date=:ddd'); ADOQuery1.Active:=true; Пробовал и в стринге параметр передавать... Последний раз редактировалось Teh, 18.04.2007 в 20:23. |
#2
|
||||
|
||||
Так попробуй:
Код:
ADOQuery1.Active:=false; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select [date]'); ADOQuery1.SQL.Add('from mdocm'); ADOQuery1.SQL.Add('where [date]=:ddd'); ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text,True); ADOQuery1.Parameters.ParamByName('ddd').Value:=DateTimePicker1.Date; ADOQuery1.Active:=true; да и в приведенном тобой примере имена параметров не совпадают. |
#3
|
|||
|
|||
Aristarh Dark про имена параметров я заметил, это из-за спешки я редактировал сообщение , экспериментировал с параметрами.
Теперь по теме, приведенный вами код Код:
ADOQuery1.Active:=false; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select [date]'); ADOQuery1.SQL.Add('from mdocm'); ADOQuery1.SQL.Add('where [date]=:ddd'); ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text,True); ADOQuery1.Parameters.ParamByName('ddd').Value:=DateTimePicker1.Date; ADOQuery1.Active:=true; База не моя ( я бы не использовал зарезервированные слова в именах полей) , [] не обязательны, в других запросах где отбор идет по текстовым и числовым полям поле Date вписано без [] и ошибки это не вызывает. |
#4
|
||||
|
||||
А где именно ошибка, в момент отработки запроса?
|
#5
|
|||
|
|||
Когда ADOQuery1 активирую.
ADOQuery1.Active:=true |
#6
|
|||
|
|||
Надоело, она мне сегодня снится будет, эта ошибка...
Код:
ADOQuery2.SQL.Add('select [date] '); ADOQuery2.SQL.Add('from mdocm'); ADOQuery2.SQL.Add('where [date]='''+datetostr(DateTimePicker1.date)+''''); |
#7
|
||||
|
||||
Прямо и не знаю чего посоветовать, единственное что я обычно заполняю свойство SQL немного не так, а именно:
Код:
ADOQuery1.Close; ADOQuery1.SQL.Text:='SELECT [date] FROM mdocm WHERE [date] = :dt'; ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text,True); ADOQuery1.Parameters.ParamByName('dt').Value:=DateTimePicker1.Date; ADOQuery1.Open; |
#8
|
|||
|
|||
Цитата:
Конечно не будет запрос работать. Такие сложные конструкции из нескольких кавычек ) Используй QuotedStr или где надо вставить кавычку ставь #39 |
#9
|
|||
|
|||
Руки опустились.... видимо это в самой таблице поле записывается как-то не так,(работает с базой очень старая программа БЭСТ-4 , есть поле со значением ' 5' т.е. ПЯТЬ пробелов и цифра, вот и попробуй потом не зная этого провести выборку с четким равенством) хотя остальные запросы с параметрами по дате, даже с MSSQL работают.
Код:
ADOQuery2.Active:=false; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Text:='select * from operday where operday BETWEEN :datN and :datK '; ADOQuery2.Parameters.ParamByName('datN').Value:=nach; ADOQuery2.Parameters.ParamByName('datK').Value:=kon; ADOQuery2.Active:=true; |