Формирование списка однотипных отчетов...
Намеренно скопировал ранее созданный топик. К сожалению, предложенный там способ либо не работает, либо есть тонкости...
Задача: необходимо в цикле формировать копию одного и того же отчета, но с разными данными. Испробован способ:
var
Stream: TMemoryStream;
aRep: TfrReport;
frCmpRep: TrfCompositeReport;
...
Stream := TMemoryStream.Create();
frTpl.SaveToStream(Stream); // сохраняем НЕПОДГОТОВЛЕННУЮ "болванку" (без данных)
...
for i := 0 to NN do begin
PrepareSomeData(); // подготовка данных для очередного отчета
aRep := TfrReport.Create();
aRep.LoadFromStream(Stream);
aRep.Dataset := frTpl.Dataset;
if aRep.PrepareReport() then
frCmpRep.Reports.Add(aRep);
end;
frCmpRep.ShowPreparedReport(); // именно prepared, т.к. данных для всех отчетов уже нет
в итоге получаю чистый экран. То же самое - для одного отчета, если просто сделать, например:
if frTpl.PrepareReport() then
frCmpRep.Reports.Add(frTpl);
frCmpRep.ShowPreparedReport();
сам по себе один frTpl работает. Работает и rfCmpRep.ShowReport(). Может, проблема в каких-то опциях?
Спасибо!
P.S. FastReport версии 2.47 - используется по внутрифирменным соображениям. Возможен переход на 2.50, переход на 3.0 пока позволить себе не можем
P.P.S. Я понимаю, что можно сделать Master / Detail, или использовать группировку (я так и сделал). Но это все "пляски с бубном". Важно понять, почему не работает то, что вроде бы работать должно...
Задача: необходимо в цикле формировать копию одного и того же отчета, но с разными данными. Испробован способ:
var
Stream: TMemoryStream;
aRep: TfrReport;
frCmpRep: TrfCompositeReport;
...
Stream := TMemoryStream.Create();
frTpl.SaveToStream(Stream); // сохраняем НЕПОДГОТОВЛЕННУЮ "болванку" (без данных)
...
for i := 0 to NN do begin
PrepareSomeData(); // подготовка данных для очередного отчета
aRep := TfrReport.Create();
aRep.LoadFromStream(Stream);
aRep.Dataset := frTpl.Dataset;
if aRep.PrepareReport() then
frCmpRep.Reports.Add(aRep);
end;
frCmpRep.ShowPreparedReport(); // именно prepared, т.к. данных для всех отчетов уже нет
в итоге получаю чистый экран. То же самое - для одного отчета, если просто сделать, например:
if frTpl.PrepareReport() then
frCmpRep.Reports.Add(frTpl);
frCmpRep.ShowPreparedReport();
сам по себе один frTpl работает. Работает и rfCmpRep.ShowReport(). Может, проблема в каких-то опциях?
Спасибо!
P.S. FastReport версии 2.47 - используется по внутрифирменным соображениям. Возможен переход на 2.50, переход на 3.0 пока позволить себе не можем
P.P.S. Я понимаю, что можно сделать Master / Detail, или использовать группировку (я так и сделал). Но это все "пляски с бубном". Важно понять, почему не работает то, что вроде бы работать должно...