Генерация мультиотчета из частей

отредактировано 05:21 Раздел: FastReport .NET
Здравствуйте,

разрабатываемое нами приложение должно иметь множество плагинов и каждый плагин должен генерировать свою часть отчета. Есть плагин - часть генерируется, нет плагина - ничего не делаем. Порядок частей отчета желательно произвольный, настраиваемый пользователем.

Вопрос состоит в следующем: можно ли реализовать генерацию такого мультиотчета из частей?

Пока в голове две идеи (считая, что N плагинов активно):
1. генерировать N кусочков отчета в отдельные файлы, а потом их как-то клеить (можно ли склейку делать FR? т.е. может ли он дописывать отчет в существующий файл RTF в конец?)
2. как-то динамически компоновать шаблон общего мультирепорта из кусочков, а потом выводить в него. Возможно ли такое?

Большое спасибо!

Комментарии

  • отредактировано 05:21
    Здравствуйте,

    Можно, используя несколько шаблонов отчетов, сгенерировать один отчет.

    Report report = new Report();
    report.Load(file1);
    report.Prepare();
    report.Load(file2);
    report.Prepare(true); // дописываем в конец
    report.Load(file3);
    report.Prepare(true); // дописываем в конец
    report.ShowPrepared();
  • отредактировано 05:21
    Здравствуйте, Alex,

    спасибо за ответ. Понято - клеить можно. А динамически компоновать отчет - по-видимому нет?

    В случае склейки из кусочков методом, который вы предложили, можно ли как-то при этом применять одинаковые стили оформления, сквозную нумерацию страниц, оглавление и прочее?

    Понимаю, скорее всего это только вручную можно делать. Но хотя бы по двум must фичам:
    1. сквозная нумерация - например, в последнем куске репорта добавлять нумерацию ко всему документу - возможно?
    2. оглавление - при генерации частей можно ли получать из FR номера страниц, где начинаются разделы в текущей части, а потом из данных по всем частям компоновать оглавление (отдельным кусочным репортом), которое потом вставлять в репорт?

    Можно ли вставлять новые репорт не в конец (пример, который вы показали), а в заданную страницу/метку?
  • отредактировано November 2011
    Сквозная нумерация есть, переменные Page#/TotalPages#:
    http://www.fast-report.com/documentation/U...emvariables.htm
    Оглавление (вот такое - http://www.fast-report.com/documentation/U...ortoutline.htm) сделать получится.
    Добавлять отчет можно только в конец.
  • отредактировано 05:21
    Все понял, спасибо!

    Думаем теперь над вариантом использовать плагины для заполнения общего мега-DataSet, который будет кормиться общему шаблону отчета, который содержит секции для всех плагинов.

    Вопрос в том, как это будет работать, если одного плагина не будет, т.е.: если при разработке шаблона отчета DataSet, на котором он строился, содержал Table1 (из плагина 1) и Table2 (из плагина 2), а при генерации отчета будет активен только плагин1 и, соответственно, DataSet будет содержать только Table1 (а Table2 не будет вообще - даже пустой), все будет работать (не завалится)? И секцию можно будет скрыть?
  • отредактировано 05:21
    Если в отчете есть ссылка на источник данных, который не зарегистрирован вызовом report.RegisterData, получите исключение.
  • отредактировано 05:21
    AlexTZ написал: »
    Если в отчете есть ссылка на источник данных, который не зарегистрирован вызовом report.RegisterData, получите исключение.

    Понятно, а если источник данных будет зарегистрирован, но в нем не будет некоторых таблиц?
  • отредактировано 05:21
    Я под источником данных имел в виду как раз таблицу.
  • отредактировано 05:21
    AlexTZ написал: »
    Я под источником данных имел в виду как раз таблицу.
    А можно ли как-то внутри репорта программно делать проверку на наличие таблицы в датасете, чтобы избежать завала? Или однозначно, если шаблон репорта содержит в себе ссылку на, скажем, Table2 и если ее нет в датасете, то гарантированно будет завал?

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

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