Форум: "Базы";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
ВнизADOQuery Найти похожие ветки
← →
Лариса (2003-05-30 11:37) [0]Добрый день, всем. Подскажите почему я не могу передать параметры в 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. Что делать?
← →
sniknik (2003-05-30 11:46) [1]q1.Params[0].Value:= 2000;
← →
Лариса (2003-05-30 11:51) [2]Не-а, так не проходит. Выдает ошибку: Undeklared identifier "params"
← →
sniknik (2003-05-30 11:54) [3]sorry глюк в ответе. сбило
> В самом Query написано:
← →
Max Zyuzin (2003-05-30 11:56) [4]>Лариса (30.05.03 11:51)
А если как в обчном Query обратится по имени?
q1.ParamByName("god").AsInteger:=2000;
q1.ParamByName("mes").AsString:="01";
Ну в зависимоти от типов полей As...
← →
Лариса (2003-05-30 12:00) [5]Я уже пробовала обращаться именно по имени. С ADO так не проходит. У него нет, чтобы можно было либо по имени, либо по номеру, только по номеру и все.
← →
sniknik (2003-05-30 12:02) [6]а на какой команде ругается? так вроде все нормально выглядит, ну может еще тип явно указать, не помешает
q1.parameters[0].DataType:= ftInteger;
q1.parameters[0].value:=2000;
q1.parameters[1].DataType:= ftString;
q1.parameters[1].value:="01";
попробуй.
← →
sniknik (2003-05-30 12:06) [7]Лариса (30.05.03 12:00)
>Я уже пробовала обращаться именно по имени. С ADO так не проходит. У него нет, чтобы можно было либо по имени, либо по номеру, только по номеру и все.
есть
q1.Parameters.ParamByName().Value
нет AsInteger/string ....
← →
Лариса (2003-05-30 13:56) [8]Извините, по по работе вызывали.
Нет такого, чтобы можно было задать либо Parambyname или Params. Только Parameters[0].
← →
sniknik (2003-05-30 14:05) [9]TParameters.ParamByName
TParameters See also
Locates the parameter with a given name.
function ParamByName(const Value: WideString): TParameter;
поспорим? а за Params я уже извинился он тоже есть но у TQuery, незачем его здесь вспоминать.
← →
Лариса (2003-05-30 14:12) [10]попробовала с ParamByName-прошло, но ошибку так и выдало. У меня проблема не в том, что я не могу написать как параметры передать.а в том, что он их не принимает и все время мне выдает ошибку, что то слишком мало параметров, то слишком много.
← →
WarLord (2003-05-30 14:16) [11]
> delete from tab1
> where god=:god and mes=:mes
> а в программе пишу:
> q1.close;
> q1.parameters[0].value:=2000;
> q1.parameters[1].value:="01";
> q1.execsql;
должно работать
SQL нигде не переопределяется?
← →
Ann (2003-05-30 14:20) [12]Ларис, а какую точно ошибку выдает?
← →
Лариса (2003-05-30 14:21) [13]Нет, я только начала писать программку и там ничего еще кроме этого нет. Самое интересное, что когда выдется ошибка, то иногда пишется: слишком мало параметров, нужно 2, а иногда нужно 4.
← →
NAlexey (2003-05-30 14:24) [14]Parameters.FindParam("YourName").Value
← →
NAlexey (2003-05-30 14:27) [15]>слишком мало параметров, нужно 2, а иногда нужно 4.
Ты дорогая Лариса нами не доконца с нами честнА :) Такого не может быть, потому что быть такого не может. Приводи полный текст запроса и выполняющегося кода.
← →
WarLord (2003-05-30 14:30) [16]
> Лариса (30.05.03 14:21)
самый интересный вопрос: ADOQuery к ADOConnection подключен? ADOConnection активен?
← →
Лариса (2003-05-30 14:32) [17]Слушайте, издевательство какое-то. :) Я уже все пеерпробовала, а итог такой же.
← →
WarLord (2003-05-30 14:34) [18]
> Лариса (30.05.03 14:32)
> Слушайте, издевательство какое-то. :) Я уже все пеерпробовала,
> а итог такой же.
чудес не бывает!
← →
Лариса (2003-05-30 14:37) [19]NAlexey честна я с вами :) Я что в начале написла с тех пор ничего не изменилось :) Только передачу параметров меняла когда кто-нибудь что-то советовал. В итоге - ничего. Та же ошибка.
WarLord ADOQuery к ADOConnection подключен и он активен.
p.s. 1 параметр передает нормально, на 2 затыкается
← →
sniknik (2003-05-30 14:37) [20]чем дальше тем больше ощущение что самое интересное за кадром...
напиши так, только точно,
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;
что дает в результате? и где (строка ошибки).
← →
NAlexey (2003-05-30 14:38) [21]>Cлушайте, издевательство какое-то. :) Я уже все пеерпробовала, а итог такой же.
Предположение: не есть ли у тебя где триггерок или процедура какая которая срабатывает на удаление из этой таблицы?
← →
NAlexey (2003-05-30 14:42) [22]>Предположение
Ах да, чтоэто я, у тебя дело до запуска даже не доходит...
← →
Лариса (2003-05-30 14:43) [23]sniknik прям скопировала в свою программу. В итоге на строках:q1.parameters[0].DataType:= ftInteger; и q1.parameters[1].DataType:= ftString; ошибка Undeklared identifier ftInteger и ftString;
если эти строки забить, то в итоге та же ошибка с парметрами только теперь ему мало и надо 4 :))))
← →
sniknik (2003-05-30 14:45) [24]Лариса (30.05.03 14:43)
модуль DB в uses.
← →
Лариса (2003-05-30 14:52) [25]sniknik додавила, теперь ошибок на строки q1.parameters[0].DataType:= ftInteger; и q1.parameters[1].DataType:= ftString; не выдает. Но ошибка по поводу параметров осталась.
← →
sniknik (2003-05-30 15:03) [26]бред.
ну ладно, код правильный, теперь давай со свойствами компонента разбиратся.
сделай все по умолчанию а лутше добавь новый и нечего не меняй кроме Connection. а то может у тебя там фильтры или связи какие. и сделай то же но с q 2. ???
← →
NAlexey (2003-05-30 15:06) [27]Да там наверное в DesignTime добавлено параметров скорее всего.
← →
Лариса (2003-05-30 15:11) [28]Попробовала. Ошибка опять-таки на строке q2.execsql; Пишет: "[Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров.Требуется 4."
← →
Лариса (2003-05-30 15:13) [29]NAlexey где параметры добавлены?????
← →
Zz_ (2003-05-30 15:14) [30]А может попробовать руками ?
q1.parameters.Clear;
q1.parameters.CreateParameter(...);
← →
NAlexey (2003-05-30 15:18) [31]Гдето ты нас кидаешь...
Предполагаемые действия:
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)Сообщить о результатах.
← →
sniknik (2003-05-30 15:19) [32]NAlexey © (30.05.03 15:06)
q1.ParamCheck:= true;
q1.SQL.Text:= "delete from tab1 where god=:pGod and mes=:pMes";
ParamCheck должен их переделать при изменении строки запроса.
← →
Лариса (2003-05-30 15:23) [33]Да нигде я вас не кидаю. Я разобраться не могу, почему так, в чем проблема? :(
И я в первый раз компонентами ADO пользуюсь и не получается , что еще больше удручает.
← →
NAlexey (2003-05-30 15:23) [34]>NAlexey где параметры добавлены?????
Э-э-э-...Мммм. Ну не знаю где, в ADOQuery наверное... прям жмешь на свойство Parameters(там где 3 точки) и добавляешь их. Но как уже сказал "sniknik" ParamCheck развеял наши сомнения. Так ты всеже попробуй их добавить так, прям жёстко прописать тип и значение и запустить.
← →
sniknik (2003-05-30 15:32) [35]Лариса (30.05.03 15:23)
считай что меня осенило :о) (если получится)
а там ли мы ищем? если у ADOConnection1.Connected свойство прям в разработке в true поставить что будет?
← →
Лариса (2003-05-30 15:33) [36]NAlexey да я уже так делала поначалу. С этого все и началось :)
← →
Лариса (2003-05-30 15:34) [37]sniknik стоит оно в true
← →
sniknik (2003-05-30 15:41) [38]это уже интересно... не вышлеш проект вместе с базой? надеюсь база у тебя небольшая, а если еще заархивировать...
← →
Лариса (2003-05-30 15:52) [39]sniknik выслала
← →
Лариса (2003-05-30 15:59) [40]Ладно, я ушла домой, у нас конец рабочего дня. буду добивать программку в понедельник.
Всем спасибо за советы.
Пока.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.008 c