Аналитики, разбираясь с кубами иногда нуждаются в формировании отчетов, на основе срезов.
Когда это нужно? Когда на основе кубов нужно делать регулярные отчеты. Когда необходимо экспортировать куб в какой-либо популярный формат данных, который не доступен во встроенном экспорте FastCube.Net. Встроенный в FastCube экспорт предлагает нам 7 форматов:
А отчет FastReport .NET – 24. Плюс сохранение в облачные сервисы, отправка электронной почтой и по FTP:
В этой статье я хочу рассказать о такой прекрасной возможности, как сделать отчет на основе среза куба. По традиции рассматривать будем на примере.
Создадим WindowsForms приложение. Добавим в проект ссылки на библиотеки: FastReport, FastReport.Olap, FastReport.Bars. Их можно найти в папке с установленным FastCube.Net.
Добавляем на форму следующие компоненты из toolbar:
Cube, Slice, SliceGrid, Button
Настроим компонент Slice1. Для его свойства cube выберем значение cube1.
У компонента SliceGrid1 нужно задать свойство slice – slice1.
Для кнопки создадим обработчик события нажатия:
1 2 3 4 5 6 7 8 9 |
private void button1_Click(object sender, EventArgs e) { SliceCubeReportLink SliceLink = new SliceCubeReportLink(); SliceLink.Slice = slice1; cube1.Load("C:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/simple.mdc"); Report FReport = new Report(); FReport.RegisterData(SliceLink, "TestCubeLink"); FReport.Design(); } |
В первой строке кода мы создали объект SliceCubeReportLink, который как раз и отвечает за предоставление данных среза для отчета. Далее, мы присваиваем свойству slice значение slice1 для созданного объекта. То есть указываем откуда брать данные.
Теперь необходимо загрузить файл куба в объект cube. Так как мы используем файл с расширением mdc, он уже содержит внутри себя данные и нет необходимости создавать подключение к источнику данных для куба.
Затем, мы создаем объект отчета Report, загружаем в него файл с шаблоном отчета, регистрируем в нем источник данных, и запускаем отчет в дизайнере.
Если нам не нужно вносить правки в шаблон отчета, то, вместо запуска дизайнера лучше запустить отчет в режиме предварительного просмотра:
1 2 |
FReport.Prepare(); FReport.ShowPrepared(); |
Давайте, теперь рассмотрим шаблон отчета. Ведь мы только передаем в отчет данные из куба, и нам придется создать шаблон кросс-таблицы вручную. То есть генерировать отчет на лету из любого среза не получится. Всегда нужен заранее подготовленный шаблон.
Чтобы создать шаблон отчета, нам потребуется запустить приложение, а потом дизайнер отчета. Только так мы получим источник данных для отчета. Таким образом, код для нашей кнопки в первоначальном виде мы используем вызов дизайнера:
1 |
FReport.Design();
|
Запустим приложение. И нажмем кнопку формирования отчета:
При этом запустится дизайнер отчетов с пустым отчетом. Обратите внимание на область данных справа:
В нем есть источник данных куба – TestCubeLink.
А теперь посмотрите на вертикальную панель инструментов слева. А именно на значок . Это компонент CrossView, который сформирует нам кросс-таблицу из источника данных куба. «Перетаскиваем» его на бэнд «Данные».
Справа, в инспекторе свойств, найдите CubeSource
В итоге мы получим вот такой шаблон отчета:
Сохраняем его в желаемое место. В моем примере он сохранен в: C:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/Test.frx.
Закрываем приложение. Теперь модифицируем код для кнопки:
1 2 3 4 5 6 7 8 |
SliceCubeReportLink SliceLink = new SliceCubeReportLink(); SliceLink.Slice = slice1; cube1.Load("С:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/simple.mdc"); Report FReport = new Report(); FReport.Load("С:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/Test.frx"); FReport.RegisterData(SliceLink, "TestCubeLink"); FReport.Prepare(); FReport.ShowPrepared(); |
Запустим приложение и нажмем кнопку. И получаем отчет:
Из режима предварительного просмотра отчета мы можем экспортировать отчет, отправлять по email и прочее. Это был простейший пример отчета, вы можете украсить кросс-таблицу с помощью свойства style. И получите гораздо более привлекательный вид: