Соеденить разные отчеты в 1 Pdf

отредактировано July 2010 Раздел: FastReport .NET
Есть:

class A
{
Report rep1 = new Report();
rep1.Load(...);
}

class B
{
Report rep2 = new Report();
rep2.Load(...);
}

class D
{
Report rep2 = new Report();
rep2.Load(...);
}

все они в разных классах.

Вопрос: Как мне их все 3 вывести в один PDF?

Комментарии

  • отредактировано August 2010
    Создаёшь один объект типа репорт (можешь глобальный или на форму швырнуть - не важно). Назовём его rep.
    Затем делаешь вот это:
    rep.Load("...");
    rep.RegisterData(...нужныйдатасэт...);
    //а теперь самое интересное:
    rep.Prepare(true); // -- если параметр указан и он равен true, то имеющиеся данные в отчёте не убиваются, а новые добавляются к ним
    //вывод на показ
    rep.ShowPrepared(); // -- отображение без перепостроения
    //ну и собсно вывод в один пдф
    FastReport.Export.Pdf.PDFExport pdffile = new FastReport.Export.Pdf.PDFExport();
    rep.Export(pdffile, "...путькфайлу...");
  • отредактировано 09:26
    Гм, технологию:
    Report rep = new Report();
    rep.Load(...);
    rep.Prepare();
    rep.Load(...);
    rep.Prepare(true);
    rep.Load(...);
    rep.Prepare(true);
    ....
    rep.Export(pdffile, FileName);
    

    я прекрасно знаю. Проблема в том, что у меня 3 класса, каждый из которых готовит и выводит свой отчет. Теперь возникла необходимость объеденить эти 3 отчета в 1 PDF.

    Вопрос, как можно это сделать малой кровью?
  • отредактировано August 2010
    Ну а передавать в конструктор класса объект типа репорт, чтобы все классы работали с одним и тем же экземпляром?
    Я, наверное, не понимаю проблему... имхо - всё очевидно
  • отредактировано 09:26
    передавать из класса в класс - это понятно. Вопрос был к разработчикам - можно ли объеденить разные репoрты в один
  • kalina9001kalina9001 Germany
    отредактировано 09:26
    Подниму тему, может быть действительно есть возможность экспортировать несколько отчетов в один pdf?
  • kalina9001kalina9001 Germany
    отредактировано 09:26
    kalina9001 написал: »
    Подниму тему, может быть действительно есть возможность экспортировать несколько отчетов в один pdf?
    Вопрос снимается, rep.Prepare(true) - Решает проблему
  • отредактировано 09:26
    Работать с одним объектом, передавая его из класса в класс не совсем удобно, поскольку классы работают каждый со своим отчетом.

    вопрос к разработчикам: есть ли возможность объеденить разные отчеты в один примерно так:
    class A
    {
    Report rep1 = new Report();
    rep1.Load(...);
    
    public Report getReport()
    { rep1.Prepare(true); return rep1; }
    
    }
    
    class B
    {
    Report rep2 = new Report();
    rep2.Load(...);
    
    public Report getReport()
    { rep2.Prepare(true); return rep2; }
    }
    
    class D
    {
    Report rep2 = new Report();
    rep2.Load(...);
    
    public Report getReport()
    { rep3.Prepare(true); return rep3; }
    }
    
    Report out = A.getReport() + B.getReport() + C.getReport();
    
  • отредактировано 09:26
    Можно, например, возвращая страницы отчетов:
    class A
    {
        Report rep1 = new Report();
        rep1.Load(...);
    
        public List<ReportPage> GetPages()
        {
            List<ReportPage> pages = new List<ReportPage>();
            foreach (ReportPage page in rep1.Pages)
            {
                pages.Add(page);
            }
            return pages;
        }
    }
    
    Классы B и D пишутся аналогично.
    Теперь объединить отчеты можно так:
    Report report = new Report();
    A a = new A();
    B b = new B();
    D d = new D();
    foreach (ReportPage page in a.GetPages())
    {
        report.Pages.Add(page);
    }
    foreach (ReportPage page in b.GetPages())
    {
        report.Pages.Add(page);
    }
    foreach (ReportPage page in d.GetPages())
    {
        report.Pages.Add(page);
    }
    

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

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