Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

что то не получается 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) выводить


Наверх

Титульная страница Поиск, карта сайта Написать письмо