![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток!!!
Итак задача ... запрос из таблицы (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; |