Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.052 c