Выбор полей для печати отчета

Добрый день!
Возможен ли вариант отчета, в котором клиент сам выбирает, какие поля должны быть в таблице. Например, для контрагента/-ов пользователь выбирает в таблице должны отображаться полное название, контактное лицо и адрес контрагента, и в отчете в таблице отображаются лишь эти поля именно в этом порядке. Если это реально, то в какую сторону вообще копать, чтобы организовать подобную гибкость?

Нравится

3 комментария

Здравствуйте, Константин!

В коробочной версии такой вариант не предусмотрен.

Сделать подобную функциональность можно попробовать программно при помощи механизма вертикальных бэндов. Алгоритм следующий:

1. Создаем окно фильтрации для отчета.
2. Окно динамически фильтруется в зависимости от выбранной таблицы;
3. В отчете формируются столбцы в зависимости от информации, переданной окном фильтрации.

Хочу предпредить, что данная реализация может быть трудоемкой, и в том числе придется решать вопрос дизайна: слишком большое количество столбцов, выбранных в окне фильтрации, может оказаться нечитабельным.

Спасибо, Анна, за вариант решения задачи, но при этом сразу появляются еще вопросы:

  • для того, чтобы получить названия колонок таблицы, нужно обращаться к tbl_Service, но при этом вся xml-информация хранится в виде набора символов в 16тиричной системе. Есть ли функции конвертации в читабельный вид и парсинга xml?
  • каким образом в самом FastReport организовать связь и вывод информации из датасетов, если они формируются динамически из создаваемых в скрипте SelectQuery?

"Constantine" написал:для того, чтобы получить названия колонок таблицы, нужно обращаться к tbl_Service, но при этом вся xml-информация хранится в виде набора символов в 16тиричной системе. Есть ли функции конвертации в читабельный вид и парсинга xml?

Константин, получить запрос в читабельном виде можно по заголовку (USI) запроса следующей конструкцией:

var Query = Services.GetSingleItemByUSI('sq_Query');

В результате Вы получите структурированный объект запроса, где можно будет посмотреть, например, колонки запроса, фильтры, SQL-текст запроса и другое:

sq


каким образом в самом FastReport организовать связь и вывод информации из датасетов, если они формируются динамически из создаваемых в скрипте SelectQuery?

Если формирование датасетов происходит до вывода отчета FastReport, тогда датасеты будут подтягиваться автоматически.

Для вывода колоннок в отчет необходимо будет написать соответствующий программный код на Delphi во вкладке Code компонента Fast Report.

реализация подобной функциональности рассмотрена по следующей ссылке: http://www.fast-report.com/ru/documentation/frhelp/postroen_otcheta_kod…

Полезная ссылка по теме: http://www.community.terrasoft.ua/forum/topic/1630

Показать все комментарии