![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отобразить в 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-ый комплект трёх параметров>)