![]() |
| ||
|
|
Новости |
Поиск |
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. Что делать?
NAlexey (2003-05-30 15:18:00) [21]Гдето ты нас кидаешь...
Предполагаемые действия:
1) Создать эти параметры в DesignTime, принудительно присвоить им тип и значение потом запустить и смотреть что будет.
2)Попробывать написать так:
with TADOQuery.Create(nil) do
Connection := YourADOConnection;
SQL.Text := Format("delete from tab1 where god = %d and mes = %s", [1, "Blah-Blah"]);
try
ExecSQL;
finally
Free;
end;
end;
3)Сообщить о результатах.
Zz_ (2003-05-30 15:14:00) [22]А может попробовать руками ?
q1.parameters.Clear;
q1.parameters.CreateParameter(...);
Лариса (2003-05-30 15:13:00) [23]NAlexey где параметры добавлены?????
Лариса (2003-05-30 15:11:00) [24]Попробовала. Ошибка опять-таки на строке q2.execsql; Пишет: "[Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров.Требуется 4."
NAlexey (2003-05-30 15:06:00) [25]Да там наверное в DesignTime добавлено параметров скорее всего.
sniknik (2003-05-30 15:03:00) [26]бред.
ну ладно, код правильный, теперь давай со свойствами компонента разбиратся.
сделай все по умолчанию а лутше добавь новый и нечего не меняй кроме Connection. а то может у тебя там фильтры или связи какие. и сделай то же но с q 2. ???
Лариса (2003-05-30 14:52:00) [27]sniknik додавила, теперь ошибок на строки q1.parameters[0].DataType:= ftInteger; и q1.parameters[1].DataType:= ftString; не выдает. Но ошибка по поводу параметров осталась.
sniknik (2003-05-30 14:45:00) [28]Лариса (30.05.03 14:43)
модуль DB в uses.
Лариса (2003-05-30 14:43:00) [29]sniknik прям скопировала в свою программу. В итоге на строках:q1.parameters[0].DataType:= ftInteger; и q1.parameters[1].DataType:= ftString; ошибка Undeklared identifier ftInteger и ftString;
если эти строки забить, то в итоге та же ошибка с парметрами только теперь ему мало и надо 4 :))))
NAlexey (2003-05-30 14:42:00) [30]>Предположение
Ах да, чтоэто я, у тебя дело до запуска даже не доходит...
NAlexey (2003-05-30 14:38:00) [31]>Cлушайте, издевательство какое-то. :) Я уже все пеерпробовала, а итог такой же.
Предположение: не есть ли у тебя где триггерок или процедура какая которая срабатывает на удаление из этой таблицы?
sniknik (2003-05-30 14:37:00) [32]чем дальше тем больше ощущение что самое интересное за кадром...
напиши так, только точно,
q1.close;
q1.ParamCheck:= true;
q1.SQL.Text:= "delete from tab1 where god=:pGod and mes=:pMes";
q1.parameters[0].DataType:= ftInteger;
q1.parameters[0].value:= 2000;
q1.parameters[1].DataType:= ftString;
q1.parameters[1].value:= "01";
q1.execsql;
что дает в результате? и где (строка ошибки).
Лариса (2003-05-30 14:37:00) [33]NAlexey честна я с вами :) Я что в начале написла с тех пор ничего не изменилось :) Только передачу параметров меняла когда кто-нибудь что-то советовал. В итоге - ничего. Та же ошибка.
WarLord ADOQuery к ADOConnection подключен и он активен.
p.s. 1 параметр передает нормально, на 2 затыкается
WarLord (2003-05-30 14:34:00) [34]
> Лариса (30.05.03 14:32)
> Слушайте, издевательство какое-то. :) Я уже все пеерпробовала,
> а итог такой же.
чудес не бывает!
Лариса (2003-05-30 14:32:00) [35]Слушайте, издевательство какое-то. :) Я уже все пеерпробовала, а итог такой же.
WarLord (2003-05-30 14:30:00) [36]
> Лариса (30.05.03 14:21)
самый интересный вопрос: ADOQuery к ADOConnection подключен? ADOConnection активен?
NAlexey (2003-05-30 14:27:00) [37]>слишком мало параметров, нужно 2, а иногда нужно 4.
Ты дорогая Лариса нами не доконца с нами честнА :) Такого не может быть, потому что быть такого не может. Приводи полный текст запроса и выполняющегося кода.
NAlexey (2003-05-30 14:24:00) [38]Parameters.FindParam("YourName").Value
Лариса (2003-05-30 14:21:00) [39]Нет, я только начала писать программку и там ничего еще кроме этого нет. Самое интересное, что когда выдется ошибка, то иногда пишется: слишком мало параметров, нужно 2, а иногда нужно 4.
Ann (2003-05-30 14:20:00) [40]Ларис, а какую точно ошибку выдает?