Пример 3. Интерактивный объект "Матрица" |
Top Previous Next |
В этом примере мы рассмотрим, как построить детальный отчет, щелкнув на значение в ячейке объекта "Матрица". В качестве примера мы будем использовать матрицу, которая показывает объемы продаж сотрудников по годам.
В качестве источника данных для матрицы используется таблица MatrixDemo. В ней представлены продажи сотрудников, сгруппированные по году и месяцу:
На основе этих данных построим матрицу, которая печатает следующую информацию:
Готовая матрица выглядит следующим образом:
Как видно, значения в ячейках представляют собой сумму продаж сотрудника за весь год. Давайте сделаем так, чтобы при щелчке на ячейке матрицы показывался более подробный отчет. Этот отчет должен давать ответ на вопрос - "откуда в ячейке матрицы взялось это значение?". В нашем случае подробный отчет может содержать продажи выбранного сотрудника за каждый месяц выбранного года.
Как связать ячейку с данными, на основе которых она была напечатана? Каждая ячейка матрицы имеет адрес. Это совокупность значений из заголовка колонки и строки. В нашем примере адрес ячейки - это совокупность года и имени сотрудника. Именно эти данные можно передать в детальный отчет. Как это сделать? Очень просто: настройте гиперссылку, указав только имя отчета и название параметра. Значение параметра указывать не надо: для ячеек матрицы FastReport сам формирует значение и передает его в параметр.
Предположим, мы щелкнули на верхней левой ячейке, содержащей число 3900. Это сумма продаж сотрудника "Andrew Fuller" за 1999 год. В каком виде значение передается в параметр? FastReport комбинирует значение колонки и значение строки, используя точку с запятой в качестве разделителя:
1999;Andrew Fuller
То есть, в детальном отчете мы должны извлечь из этого значения год и имя сотрудника, преобразовать год в число, и эти значения использовать для фильтрации данных? Ничего подобного! Все, что нужно сделать в детальном отчете - создать параметр, имеющий вложенные параметры. Как это сделать, смотрите в главе "Данные". В данном случае родительский параметр может выглядеть следующим образом:
При создании параметра учитывайте следующие моменты:
Итак, после того как мы прояснили все необходимые моменты, приступим к созданию отчета. Выделите ячейку матрицы и вызовите редактор гиперссылки:
В настройке гиперссылки вам нужно указать в качестве параметра родительский параметр (в нашем примере - "SelectedCell"):
FastReport сам передаст значения во вложенные параметры SelectedCell.Year и SelectedCell.Name. Эти значения будут преобразованы в тип данных, указанный в настройке параметра - вот почему так важно правильно настроить тип данных параметра.
Детальный отчет располагается на отдельной странице основного отчета и использует тот же источник данных, что и матрица - MatrixDemo:
Осталось отфильтровать строки данных, чтобы показать продажи выбранного сотрудника за выбранный год. Для этого откройте редактор бэнда "Данные" и укажите следующее условие фильтрации:
[MatrixDemo.Year] == [SelectedCell.Year] && [MatrixDemo.Name] == [SelectedCell.Name]
Отчет готов. Запустите его на выполнение и щелкните на верхней левой ячейке. Откроется детальный отчет, который содержит следующие данные:
Как видно, сумма значений соответствует значению ячейки матрицы, на которой мы щелкнули.
|