Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.22;
Скачать: CL | DM;

Вниз

Parameter not found   Найти похожие ветки 

 
123-ий   (2008-05-26 13:12) [0]

Пользуюсь 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. В таблице поле есть. Значение параметру присваивается нормальное. В чём может быть дело?


 
Palladin ©   (2008-05-26 13:15) [1]


> 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;


 
Ega23 ©   (2008-05-26 13:40) [2]

Сильно подозреваю, что парсеру параметров не нравится конец строки после :pDate. Попробуй пробел туда добавить.
А вообще - у SQL есть свойство Text.
И, кстати, нифига непонятно: зачем в даннос случае Prepared использовать? Ведь запрос однократно выполняется...


 
123-ий   (2008-05-26 13:41) [3]

Попробовал. Всё равно not found. Поэксперементировал - если в текст запроса вместо pDate подставить к примеру  pData, в тексте ошибки всё равно pDate. А вот если в строке, где параметру присваивается значение вместо pDate подставить pData - в ошибке будет ругаться что не найден параметр pData. Следовательно ругается на строку:

> Parameters.ParamByName("pDate").Value := Date;

P.S. не знаю, даст ли это что-нибудь


 
Palladin ©   (2008-05-26 13:43) [4]

кто провайдер?


 
Anatoly Podgoretsky ©   (2008-05-26 13:44) [5]

> 123-ий  (26.05.2008 13:41:03)  [3]

ParamCheck


 
123-ий   (2008-05-26 13:44) [6]

Jet 4


 
123-ий   (2008-05-26 13:45) [7]


> ParamCheck
Бесполезно :(


 
Palladin ©   (2008-05-26 13:50) [8]

а у тебя свойство Connection назначено ли?


 
123-ий   (2008-05-26 14:01) [9]

Да, назначено. Потому что другие запросы с помощью PlansQuery выполняются вполне успешно.


 
Palladin ©   (2008-05-26 14:04) [10]

А мне сдается, что нет... хотя сейчас и проверим, выполни следующее

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;


 
Ega23 ©   (2008-05-26 14:04) [11]

А может всё в Date упирается? Типа, зарезервированное слово и всё такое?


 
Плохиш ©   (2008-05-26 14:05) [12]


> 123-ий   (26.05.08 14:01) [9]

Рекомендую всё-таки переписать код без with PlansQuery do.


 
Palladin ©   (2008-05-26 14:05) [13]

соединение, конечно, на свое замени... можешь (и нужешь) методом формы сделать


 
Palladin ©   (2008-05-26 14:06) [14]


> Ega23 ©   (26.05.08 14:04) [11]

да фик, знает, аффтар утверждает, что ругается на pDate, а не date


 
123-ий   (2008-05-26 14:07) [15]

Разобрался. Глюк действительно с connection"ом был, а я в тексте запроса ошибку искал. Спасибо большое за помощь.


 
sniknik ©   (2008-05-26 14:08) [16]

> А может всё в Date упирается? Типа, зарезервированное слово и всё такое?
легко!
... where [date]=:pData ...
а лучше не называть так.


 
Palladin ©   (2008-05-26 14:10) [17]


> 123-ий   (26.05.08 14:07) [15]

и замечание sniknik"a тоже учти, дело говорит, поля лучше так не называть


 
123-ий   (2008-05-26 14:28) [18]

знаю, как раз собирался исправить


 
Ega23 ©   (2008-05-26 14:29) [19]


> а лучше не называть так.


Естественно.


 
Anatoly Podgoretsky ©   (2008-05-26 14:37) [20]

> 123-ий  (26.05.2008 13:45:07)  [7]

Если ты не понял, то это был вопрос.


 
Anatoly Podgoretsky ©   (2008-05-26 14:39) [21]


> да фик, знает, аффтар утверждает, что ругается на pDate,
>  а не date

Так без соединения параметр автоматически определить нельзя, а Date это уже другая ошибка.


 
sniknik ©   (2008-05-26 14:56) [22]

> а Date это уже другая ошибка.
не. та же самая. Jet просто любое неопределенное им название поля считает параметром... а если это еще и зарезервированное поле, то теоретически может даже если поле есть (смотря в каком порядке у него там проверка).
т.е. как себе представляю, на этапе определения типа параметра pData идет обращение к полю с каким он сравнивается (date. ну а как по другому определить?), поле не определяется/или ошибка на попытке, и jet делает вывод что это тоже параметр... а значения у него нет.
ну, в общем гдето так.

а вообще любое несоответствующее реальным полям выдаст такую ошибку. к примеру
SELECT [название которого нет]
"вернет"
EOleException : Отсутствует значение для одного или нескольких требуемых параметров
хотя какие здесь параметры? ;)


 
Palladin ©   (2008-05-26 15:03) [23]

а в ацессе спровоцирует InputBox :)


 
123-ий   (2008-05-26 15:09) [24]


> Anatoly Podgoretsky ©   (26.05.08 14:37) [20]
Даже если это был вопрос, это мне не помогло :)


 
123-ий   (2008-05-26 15:10) [25]

В смысле ParamCheck - не помог.


 
Anatoly Podgoretsky ©   (2008-05-26 15:15) [26]

В смысле ты так и не сообщил его значение, а поможет или нет и речи не стояло.


 
sniknik ©   (2008-05-26 15:25) [27]

> В смысле ParamCheck - не помог.
оно и не должно было помочь. просто его значение (фалсе) это еще одна возможность почему может происходить обсуждаемая ошибка...

информацию ты должен был привести как можно более полную, и раз уж не догадался то ответить на уточняющие вопросы...
вот к примеру о пользе инфы, пока ты не сказал
123-ий   (26.05.08 13:44) [6]
> Jet 4
все мои выкладки не имели смысла...
я видел вопрос [0] когда еще не было ни одного поста... открыл, прочитал...пожал плечами, подумал "чудеса случаются", и закрыл ветку... (ну а что можно сказать в отсутствии нужной информации?)


 
Anatoly Podgoretsky ©   (2008-05-26 15:26) [28]


> (ну а что можно сказать в отсутствии нужной информации?)

Можно сказать ССЗБ


 
Palladin ©   (2008-05-26 15:49) [29]


> sniknik ©   (26.05.08 15:25) [27]

а чудес не быват. а опыт у меня в такой ошибке имелся. :) я"ж не божественное существо, тоже соединение пару раз неназначил, зато теперь знаю откуда могут расти ноги у этой ошибки.


 
sniknik ©   (2008-05-26 16:01) [30]

> тоже соединение пару раз неназначил
да я помню обсуждения порожденные этим поводом, но тут код не тот... вот если бы он внес запрос, а после этого, перед открытием стал бы коннект присваивать... тогда да, тогда даже инфа о используемом провайдере не понадобилась бы.

> зато теперь знаю откуда могут расти ноги у этой ошибки.
да из всего тела... %)


 
123-ий   (2008-05-26 17:11) [31]


> Anatoly Podgoretsky ©   (26.05.08 15:15) [26]

Ну когда сказали ParamCheck я сделал ParamCheck := true; и это не помогло :)



Страницы: 1 вся ветка

Текущий архив: 2008.06.22;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.018 c
15-1210177626
Александр Иванов
2008-05-07 20:27
2008.06.22
Вложенные Repeater ы в ASP.NET


2-1212066226
Sten
2008-05-29 17:03
2008.06.22
Вырезать в начале строки


2-1212014851
ply
2008-05-29 02:47
2008.06.22
аналог in_array в php


2-1211998877
deled
2008-05-28 22:21
2008.06.22
узнать цвет пикселя в Image


15-1210606096
User1
2008-05-12 19:28
2008.06.22
ADOTable & свойство CursorLocation