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

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

почему на второй форме параметический запрос не работает [D7, XP]


Страницы:   1 2

sipsik ©   (2007-03-05 12:26:00) 

Здравствуйте!
Подскажите, пожалуйста, почему у меня на второй форме не работает параметрический запрос (пишет, что нет вообще параметра в ADOQuery, хотя он есть), а на первой (главной) форме он же работает?


sipsik   (2007-03-05 13:32:00) [1]

Да, спасибо.


ЮЮ   (2007-03-05 13:25:00) [2]

> А Вам, ЮЮ, большое спасибо, все получилось

Кстати, если первый запрос и "работает", но с большой долей вероятности - неправильно. Передклвйте его точно так же


sipsik   (2007-03-05 13:20:00) [3]

Сразу говорю, чтобы не гадали: раньше я об этом свойстве не знала.
Я же не профессионал в этом вопросе, в первый раз делаю. Поэтому и вопросы в разделе "Начинающим".
А Вам, ЮЮ, большое спасибо, все получилось


Плохиш   (2007-03-05 13:13:00) [4]

Каждое изменение запроса пересоздаёт список параметров.

PS. Для желающих сделать уточнение, подумайте, а знает ли она о том свойстве.


ЮЮ   (2007-03-05 13:13:00) [5]

> а, ну теперь поняла, сейчас попробую

похоже, индейцы скальп сняли.

Еще нет, но лучше бы они сделали это:

ADOQuery2.SQL.Text :=
 'select * from [читатели] ' +
 'where "название категории"<:krit';
 // cначала сформировали ВЕСЬ запрос, всякая модификация сбросит нафиг все параметрв

ADOQuery2.Parameters[0].Value:=ComboBox1.Text;
 // заполнили все параметры, сколько их есть
ADOQuery2.Open;
 // открыли


Плохиш   (2007-03-05 13:11:00) [6]

Kinder, Küche, Kirche


sipsik   (2007-03-05 13:09:00) [7]

ну вот так тоже не видит параметр

QuerySQL:='select * from [читатели] ';
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(querySQL);
ADOQuery2.Parameters[0].Value:=ComboBox1.Text;
querySQL:=querySQL+' where "название категории"<:krit';
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(querySQL);
ADOQuery2.Active;
ADOQuery2.Open;

сначала сформировала текст запроса, потом - параметры. но говорит, нет параметра


sipsik   (2007-03-05 13:00:00) [8]

предыдущий пост - это Плохишу
а, ну теперь поняла, сейчас попробую


sipsik   (2007-03-05 12:59:00) [9]

что вы имеете в виду, извините, мне трудно понять вас.
что мне исправить, чтобы на второй форме тоже заработал параметрический запрос?
как только я сажусь за программу, один ребенок начинает играть в индейцев, а второго выгоняют из школы за второй обувью


ЮЮ   (2007-03-05 12:57:00) [10]

> ADOQuery2.Parameters[0].Value:=ComboBox1.Text;
> querySQL:=querySQL+' where "название категории"<:krit';
> ADOQuery2.SQL.Clear;
> ADOQuery2.SQL.Add(querySQL);
> ADOQuery2.Active;
> ADOQuery2.Open;

Сначаласледует формировать текст запроса, а лишь затемзаполнять параметры


> ADOQuery1.SQL. Add(QuerySQL5);

Теперь у тебя в SQL несколько запросов и выполняется (хотя это и странно) первый из них

> ADOQuery2.SQL.Clear;
> ADOQuery2.SQL.Add(querySQL);

А здесь хоть правильно с точки зрения формирования запроса


Плохиш   (2007-03-05 12:53:00) [11]


> sipsik   (05.03.07 12:50) [10]

Руки бы вырвал за бездумное топтание кнопок, хоть бы почитала сначала чего.

d:=datetostr(date);
QuerySQL5 := 'SELECT * FROM [заказ на производство] where "Дата производства"<:data and "Реализация"=false';
ADOQuery1.SQL.Text := QuerySQL5;
ADOQuery1.Parameters[0].Value:=date;
ADOQuery1.Open;


> ADOQuery2.Active;
> ADOQuery2.Open;

А это что - "масло масляное"?


sipsik   (2007-03-05 12:50:00) [12]

Сейчас напишу. Не успеваю.

Вот работающий на первой форме:

ADOQuery1.Parameters[0].Value:=date;
d:=datetostr(date);
QuerySQL5 := 'SELECT * FROM [заказ на производство] where "Дата производства"<:data and "Реализация"=false';
ADOQuery1.SQL.Add(QuerySQL5);
ADOQuery1.Open;
ADOQuery1.Active:=true;


Вот неработающий на второй форме:

ADOQuery2.Parameters[0].Value:=ComboBox1.Text;
querySQL:=querySQL+' where "название категории"<:krit';
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(querySQL);
ADOQuery2.Active;
ADOQuery2.Open;


ЮЮ   (2007-03-05 12:48:00) [13]

> ADOQuery2.Parameters.ParamByName(kategor).Value
> на kategor пишет, что undecleared identifier

Напиши
 ADOQuery2.Parameters.ParamByName( 'kategor').Value
если параметр так называется, только всё-равно отхватишь AV

Текст запроса  ADOQuery2 - в студию


MsGuns   (2007-03-05 12:46:00) [14]

>?sipsik   (05.03.07 12:40) [6]

А код, содержащий текст запроса, можно посмотреть ?
Такое впечатление, что "параметры" в запросе указаны без "волшебного" символа ;)


Плохиш   (2007-03-05 12:43:00) [15]


> sipsik   (05.03.07 12:40) [6]

Так и будем филосовствовать или всё-таки соизволите представить работающий и неработающий код и запрос?


sipsik   (2007-03-05 12:40:00) [16]

при обращении
ADOQuery2.Parameters[0].Value
пишет, что list out of bounds,
а при обращении
ADOQuery2.Parameters.ParamByName(kategor).Value
на kategor пишет, что undecleared identifier


Плохиш   (2007-03-05 12:35:00) [17]


> sipsik   (05.03.07 12:31) [2]
> Я его создала так же, как создавала параметр на первой форме

А чем не нравиться, как параметры ADOQuery создаёт?


ЮЮ   (2007-03-05 12:33:00) [18]

> а на первой (главной) форме он же работает?

Положи работатающий в DataModule и используй его на обеих формах (если это действительно он же). Самое главное, положи туда же ADOConnection и используй его для всех ADOQuery, где бы они не находились


Reindeer Moss Eater   (2007-03-05 12:33:00) [19]

но его для программы все равно нет

Это главное.
Для программы его нет. Этим все сказано.


sipsik   (2007-03-05 12:31:00) [20]

Я его создала так же, как создавала параметр на первой форме, свойства те же, но его для программы все равно нет.
В чем ошибка может быть?


Страницы:   1 2

Наверх

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