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

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

Как отобразить в DBGrid результаты нескольких запросов.


Dron ©   (2004-02-04 13:22:00) 

Здравствуйте. Тема такая - у меня есть в Interbase хранимая процедура - 3 входных и с десяток выходных параметров. В моей программе в цикле задаются эти входные параметры. Нужно, чтобы результаты запросов отобразились один под другим в DBGrid"e, т.е. мне как-то надо сохранить результаты предыдущих запросов в Dataset"e. Как это сделать? Cпасибо.


Соловьев   (2004-02-04 14:45:00) [1]

FB?
С массивами в FB не работал, но может передать массив параметров, а в ХП их отработать?


Johnmen   (2004-02-04 14:29:00) [2]

Формируй текст запроса динамически.
1. Имена параметров тоже формируются динамически &
опять же в цикле(или как там у тебя)определяй значения
параметров.
2. Без параметров, всё чистым текстом, в цикле...:)


HSolo   (2004-02-04 14:22:00) [3]

Загружайте результаты запросов в какой-нибудь DataSet в памяти. Например, ClientDataSet, или какой-нибудь RxMemoryData


Dron   (2004-02-04 14:00:00) [4]

Пробовал, но такой вариант не проходит. Загвоздка в том, что я не знаю какое кол-во комплектов входных параметров будет, поэтому не могу записать это в одном запросе. В моем случае должен быть цикл.
Вот фрагмент хранимой процедуры (не полный текст)

begin
select
trunk_names.descr,
max(trunk_data.avlb_o),
// и т.д и т.п
from trunk_names
where //----//
into
:trunkname,
//--//
:occ_i;
suspend;
select
trunk_names.descr,
max(trunk_data.avlb_o),
// и т.д и т.п
from trunk_names
where //----//
into
:trunkname,
//--//
:occ_i;
suspend;
end;

А вот так я её вызываю из Delphi

with Form1.IB_form17 do
begin
Close;
Sql.Clear;
SQL.Add("select * from FORM17_OTCHET(:par1,:par2,:par2)");
ParamByName("par1").AsString := //---// ;
ParamByName("par2").AsDateTime := //---// ;
ParamByName("par3").AsDateTime := //---//;
Open;
end;

И этот вызов помещается в цикл.
В итоге мне нужно получить один DataSet в котором будут результаты этих запросов. Какие могут быть предложения.


Johnmen   (2004-02-04 13:37:00) [5]

Сразу всё:
SELECT * FROM MyProcedure(<первый комплект трёх параметров>)
UNION ALL
SELECT * FROM MyProcedure(<второй комплект трёх параметров>)
UNION ALL
.........
SELECT * FROM MyProcedure(<N-ый комплект трёх параметров>)


Наверх

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