Формирование списка однотипных отчетов...

отредактировано August 2005 Раздел: FastReport 2.xx VCL
Намеренно скопировал ранее созданный топик. К сожалению, предложенный там способ либо не работает, либо есть тонкости...

Задача: необходимо в цикле формировать копию одного и того же отчета, но с разными данными. Испробован способ:

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, или использовать группировку (я так и сделал). Но это все "пляски с бубном". Важно понять, почему не работает то, что вроде бы работать должно...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.