Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Parameter not found


Страницы:   1 2

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;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо