![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Parameter not found
123-ий © (2008-05-26 13:12:00)Пользуюсь ADO. Пример запроса:
procedure TfPlaner.GetPlansList;
var
Done, Date: string;
begin
Date := DateToStr(now);
with PlansQuery do
begin
close;
SQL.Clear;
SQL.Add('Select *');
SQL.Add('From Plans');
SQL.Add('Where Date=:pDate');
SQL.Add('Order By Company');
Prepared := true;
Parameters.ParamByName('pDate').Value := Date;
open;
end;
PlansListBox.Clear;
PlansQuery.First;
while PlansQuery.Eof = false do
begin
PlansListBox.Items.Add(PlansQuery.FieldByName('Company').AsString);
PlansQuery.Next;
end;
end;
В итоге ошибка Parameter "pDate" not found. В таблице поле есть. Значение параметру присваивается нормальное. В чём может быть дело?
Ega23 (2008-05-26 14:04:00) [21]А может всё в Date упирается? Типа, зарезервированное слово и всё такое?
Palladin (2008-05-26 14:04:00) [22]А мне сдается, что нет... хотя сейчас и проверим, выполни следующее
Procedure Test0003;
var
q:TADOQuery;
begin
q:=TADOQuery.Create(Nil);
Try
q.Connection:=Form1.ADOConnection1;
q.SQL.Text:='select * from plans where date=:pData order by company';
q.Parameters.ParamByName('pData').Value := Date;
q.open;
Finally
q.Free;
End;
end;
123-ий (2008-05-26 14:01:00) [23]Да, назначено. Потому что другие запросы с помощью PlansQuery выполняются вполне успешно.
Palladin (2008-05-26 13:50:00) [24]а у тебя свойство Connection назначено ли?
123-ий (2008-05-26 13:45:00) [25]
> ParamCheck
Бесполезно :(
123-ий (2008-05-26 13:44:00) [26]Jet 4
Anatoly Podgoretsky (2008-05-26 13:44:00) [27]> 123-ий (26.05.2008 13:41:03) [3]
ParamCheck
Palladin (2008-05-26 13:43:00) [28]кто провайдер?
123-ий (2008-05-26 13:41:00) [29]Попробовал. Всё равно not found. Поэксперементировал - если в текст запроса вместо pDate подставить к примеру pData, в тексте ошибки всё равно pDate. А вот если в строке, где параметру присваивается значение вместо pDate подставить pData - в ошибке будет ругаться что не найден параметр pData. Следовательно ругается на строку:
> Parameters.ParamByName('pDate').Value := Date;
P.S. не знаю, даст ли это что-нибудь
Ega23 (2008-05-26 13:40:00) [30]Сильно подозреваю, что парсеру параметров не нравится конец строки после :pDate. Попробуй пробел туда добавить.
А вообще - у SQL есть свойство Text.
И, кстати, нифига непонятно: зачем в даннос случае Prepared использовать? Ведь запрос однократно выполняется...
Palladin (2008-05-26 13:15:00) [31]
> while PlansQuery.Eof = false do
бред
> PlansQuery.First;
бред
пробуй так
with PlansQuery do
begin
close;
Prepared := true;
SQL.Text:='select * from plans where date=:pDate order by company');
Parameters.ParamByName('pDate').Value := Date;
open;
end;