MultiReport in LazReport

Модератор: Модераторы

MultiReport in LazReport

Сообщение DedFrend » 14.10.2023 21:54:44

Кто-нибудь знает, как в LazReport слить вместе несколько отдельно формируемых отчетов. Есть компонент, у него есть свойство Reports, но как это
заставить работать? Методом "научного тыка" не получается.
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: MultiReport in LazReport

Сообщение alexs » 16.10.2023 11:55:37

Вот кусок из моего проекта - надёргал

процдеура добавляет в композитный отчёт данные из обычного подготовленного
Код: Выделить всё
procedure DoAddFrom(Report: TfrReport);
var
  S:TMemoryStream;
begin
  if (Report <> nil) and (Report.EMFPages.Count > 0) then
  begin
    S:=TMemoryStream.Create;
    try
      Report.EMFPages.SaveToStream(S);
      S.Position:=0;
      MainDM.frMainComposite.EMFPages.AddPagesFromStream(S);
    finally
      S.Free;
    end;
  end;
end;


Основное формирование
Код: Выделить всё
 
   MainDM.frMainComposite.Reports.Clear;
  //Добавим первый отчёт
    MainDM.frMainReport.LoadFromFile(RepFileName);
    MainDM.frMainReport.PrepareReport;
    DoAddFrom(MainDM.frMainReport);

  //Добавим второй отчёт
    MainDM.frMainReport.LoadFromFile(RepFileName);
    MainDM.frMainReport.PrepareReport;
    DoAddFrom(MainDM.frMainReport);
//отобразим композитный
    MainDM.frMainComposite.ShowPreparedReport
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: MultiReport in LazReport

Сообщение DedFrend » 16.10.2023 23:06:41

Что-то страшновато выглядит. Но спасибо! Буду посмотреть.
А нет ли ссылочки? Потому что то, что обычно приводится по этому поводу, информации не содержит.
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: MultiReport in LazReport

Сообщение alexs » 18.10.2023 09:37:31

У меня код предназначен для универсального решения - одни и те же отчёты можно формировать как отдельными отчётами так и сшивать в один отчёт
например можно просто информацию о товаре дать клиенту (картинку/сертификат и т.д.), а в других ситуациях всё это собирается в один пакет (обычно pdf) вместе с счётом на оплат/упд/пропуском и т.д.
поэтому получилось так

а если совсем простой пример то вот можно так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: MultiReport in LazReport

Сообщение DedFrend » 20.10.2023 21:55:42

Спасибо, разобрался!
Моя проблема была в том, что отдельные отчеты у меня были на разных формах. И я с дуру при добавлении отчета создавал "голый" компонент
TfrReport. Конечно, он никаких данных не видел и не отображался.
Правильно вот так:
Код: Выделить всё
var
  AllReport: TfrCompositeReport;
  SampleReport1, SampleReport2: TForm;
....
  SampleReport1 := TFirstReport.Create(self);
  AllReport.Reports.Add(SampleReport1.frReport);
  SampleReport2 := TSecondReport.Create(self);
  AllReport.Reports.Add(SampleReport2.frReport);
  AllReport.ShowReport;
  AllReport.Clear;
  SampleReport1.free;
  SampleReport2.free;

DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru