![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOQuery [D5, Access]
Лариса © (2003-05-30 11:37:00)Добрый день, всем. Подскажите почему я не могу передать параметры в Query. Это мой первый опыт работы с данным компонентом и почем утакая проблема понять не могу. Я с помощью компонента ADOQuery пытаюсь удалить данные по условию из таблицы в Аccess. В самом Query написано:
delete from tab1
where god=:god and mes=:mes
а в программе пишу:
q1.close;
q1.parameters[0].value:=2000;
q1.parameters[1].value:="01";
q1.execsql;
После запуска программы выдается ошибка, что слишком мало параметров нужно 2. Что делать?
WarLord (2003-05-30 14:16:00) [41]
> delete from tab1
> where god=:god and mes=:mes
> а в программе пишу:
> q1.close;
> q1.parameters[0].value:=2000;
> q1.parameters[1].value:="01";
> q1.execsql;
должно работать
SQL нигде не переопределяется?
Лариса (2003-05-30 14:12:00) [42]попробовала с ParamByName-прошло, но ошибку так и выдало. У меня проблема не в том, что я не могу написать как параметры передать.а в том, что он их не принимает и все время мне выдает ошибку, что то слишком мало параметров, то слишком много.
sniknik (2003-05-30 14:05:00) [43]TParameters.ParamByName
TParameters See also
Locates the parameter with a given name.
function ParamByName(const Value: WideString): TParameter;
поспорим? а за Params я уже извинился он тоже есть но у TQuery, незачем его здесь вспоминать.
Лариса (2003-05-30 13:56:00) [44]Извините, по по работе вызывали.
Нет такого, чтобы можно было задать либо Parambyname или Params. Только Parameters[0].
sniknik (2003-05-30 12:06:00) [45]Лариса (30.05.03 12:00)
>Я уже пробовала обращаться именно по имени. С ADO так не проходит. У него нет, чтобы можно было либо по имени, либо по номеру, только по номеру и все.
есть
q1.Parameters.ParamByName().Value
нет AsInteger/string ....
sniknik (2003-05-30 12:02:00) [46]а на какой команде ругается? так вроде все нормально выглядит, ну может еще тип явно указать, не помешает
q1.parameters[0].DataType:= ftInteger;
q1.parameters[0].value:=2000;
q1.parameters[1].DataType:= ftString;
q1.parameters[1].value:="01";
попробуй.
Лариса (2003-05-30 12:00:00) [47]Я уже пробовала обращаться именно по имени. С ADO так не проходит. У него нет, чтобы можно было либо по имени, либо по номеру, только по номеру и все.
Max Zyuzin (2003-05-30 11:56:00) [48]>Лариса (30.05.03 11:51)
А если как в обчном Query обратится по имени?
q1.ParamByName("god").AsInteger:=2000;
q1.ParamByName("mes").AsString:="01";
Ну в зависимоти от типов полей As...
sniknik (2003-05-30 11:54:00) [49]sorry глюк в ответе. сбило
> В самом Queryнаписано:
Лариса (2003-05-30 11:51:00) [50]Не-а, так не проходит. Выдает ошибку: Undeklared identifier "params"
sniknik (2003-05-30 11:46:00) [51]q1.Params[0].Value:= 2000;