![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
что то не получается c sql запросом [D6]
user © (2004-01-05 17:17:00)
код который выполнятеся по нажатию на клавишу
adoquery.active:=false;
adoquery.sql.clear;
if checkbox1.checked then begin st:=st+"and F5=:FF1.text;
adoquery.parameters.parambyname("FF1").value:=Maskedit1.text;
end;
if checkbox2.checked then begin st:=st+"and F6=:FF6.text;
adoquery.parameters.parambyname("FF2").value:=Maskedit2.text;
end;
adoquery.sql.add(select * from [ИТР$] where st);
у меня ругательство по поводу динамических переменных
как мне быть
приблизительно следующее у меня таблица в Excel поэтому [ИТР$]
но это неважно мне необходимо сформировать динамический запрос
но проблема в том что иногда нет необходимости производить выборку по некоторым полям поэтому я ввел checkbox-ы с Maskedit-ами , если не нажат checkbox то часть кода не нужно вставлять в запрос(значит по соответствующему полю выборка не нужна) допустим первый checkbox1 нажат тогда необходимо включить строчки F5=:FF1.text; где F5 у нас будет это поле цен по которому будет происходить выборка данных. а FF1 - динамисческая переменная
как мне быть так как он у меня ругается по поводу переменных FF1, FF2. - хотя это правильно так как я ввожу переменную а sql запрос еще не производился так как мне решить свою проблему
Desdechado (2004-01-06 14:35:00) [1]
В запросе нет динамических переменных. Есть параметры.
Но они появляются автоматически ПОСЛЕ написания текста запроса в SQL.Text (если они в запросе есть). Вот тогда и присваивай значения параметрам.
И лепить в текст запроса имена дельфийских переменных по меньшей мере странно.
Роберт (2004-01-06 11:40:00) [2]
st:=st+"and F5=:FF1.text;
просто опечатка
st:=st+"and F5=:FF1.text";
вопрос заключается в том чтобы допустим у нас не будет
в sql запросе динамической переменной но мы при этом объявляем динамическубю переменную то вознимает ошибка
adoquery.parameters.parambyname("FF2").value:=Maskedit2.text
использую adoquery, где я не знаю как объявлять типы определенного параметра.
а в query можно легко назначать опеределенный тип
через asstrings
Desdechado (2004-01-05 17:24:00) [3]
adoquery.sql.add("select * from [ИТР$] where " + st);
JibSkeart (2004-01-05 17:23:00) [4]
дейсвително ,
сперва запрос потом параметры
допустим так
select * from my_table where my_field > :NUM
Desdechado (2004-01-05 17:22:00) [5]
странная конструкция
st:=st+"and F5=:FF1.text;
где закрывающий апостроф? что за text?
если у тебя maskedit известный тип принимает, то и пиши просто
st:=st+"and F5="+Maskedit1.text; // для числа, например
Johnmen (2004-01-05 17:21:00) [6]
Сначала динамически запрос, а уж потом прописываем параметры :)
И ещё. Что такое .textв параметрах ????
JibSkeart (2004-01-05 17:21:00) [7]
adoquery.sql.add(select * from [ИТР$] where st); ????
да и попробуй в
ShowMessage(Adoquery.SQl.Text) выводить