Данные на основе других источников данных
В генераторе отчетов Stimulsoft Reports можно создать источник данных на основе уже существующих источников данных. Источник данных Данные на основе других источников (Data from other DataSource) предоставляет аналогические возможности, что и запрос к базе данных. При создании такого источника данных можно с помощью визуального интерфейса, в процессе создания источника данных, произвести сортировку, группировку, фильтрацию и вычисление итогов с помощью агрегатных функций. Рассмотрим пример создания данных на основе других источников. Допустим, есть Master-Detail отчет, в котором каждой категории соответствуют некоторое количество продуктов. На рисунке снизу представлена страница Master-Detail отчета (представлена частично):
Как видно из рисунка, в отчете отображается название категории, имя продукта (относящегося к данной категории) и цена продукта. Если необходимо создать отчет, в котором будут отображаться название категории и общая стоимость всех продуктов входящих в данную категорию, то это можно выполнить различными способами. Но наиболее простым способом будет создание источника данных на основе других данных. Для этого, следует в окне Новый источник данных (New Data Source) выбрать пункт Данные на основе других данных и в следующей диалоговой форме окна новый источник данных, произвести настройку создаваемого источника данных.
Как видно из рисунка, процесс создания данных на основе других источников состоит из следующих этапов:
Источник данных (Data Source). На данном этапе необходимо указать Наименование (Name) нового источника данных и его Псевдоним (Alias). В данном примере, псевдоним и наименование источника данных указано как DataSource1. Также, следует выбрать источник данных на основе которого будет создан новый. В данном случае, выбран источник данных Products. Данный этап является обязательным.
Условия сортировки указываются на шаге Сортировка (Sort). На данном этапе следует указать колонку данных, по которой будет осуществляться сортировка, и выбрать направление сортировки. Данный этап не является обязательным.
Установить условия фильтрации данных в новом источнике данных можно на этапе Фильтры (Filters). Для фильтрации данных необходимо добавить фильтр, указать выражение или условие, согласно которому будет осуществляться фильтрация. Данный этап не является обязательным.
Указывать условия группировки данных в новом источнике данных можно на шаге Группировка (Groups). Для группировки данных следует указать колонку данных, по которой будут данные группироваться, и выбрать направление расположения групп. Колонка данных, по которой будет осуществляться группировка, будет присутствовать в новом источнике данных. В этом примере, используя связь между источниками данных Categories и Products, укажем группировку по колонке данных CategoriesName, которая содержит названия категорий. Данный этап не является обязательным.
Последний шаг Результаты (Results). На данном шаге можно произвести вычисление по колонке данных с помощью агрегатных функций. На рисунке снизу представлена вкладка Результаты:
Как видно из рисунка, на данной вкладке следует указать следующие параметры:
Выбрать в поле Колонка (Column) колонку данных, которая будет присутствовать в новом источнике данных или из которой будут браться данные для расчета агрегатной. Данное поле является обязательным для заполнения. Для примера выбрана колонка данных UnitPrice, которая содержит данные о стоимости продуктов.
Параметр Агрегатная Функция (Aggregate Function) представляет собой Поле со списком с перечнем агрегатных функций, которые могут быть использованы для обработки значений выбранной колонки данных. Агрегатную функцию можно не указывать, в этом случае значения колонки обрабатываться не будут. В данном примере, выбрана агрегатная функция Sum, которая суммирует данные.
В поле Наименование (Name) указывается имя колонки, которое используется для обращения к данной рассчитываемой колонке в отчете.
Теперь для построения отчета можно использовать источник данных DataSource1, который содержит две колонки данных: CategoryName и UnitPrice.Sum.
Как видно из рисунка, каждой категории соответствует общая стоимость всех продуктов, входящих в данную категорию.