Связь
YouTube |
Видеоурок по созданию связи между источниками данных в Web дизайнере.
|
Связь создается между источниками данных и определяет, каким образом должны быть связаны данные из этих источников. При создании связи указываются ключи, роль которых выполняют колонки данных. В результате связь представляет собой соединение между источниками данных, на основании одной или нескольких ключевых колонок данных. Связь предоставляет возможность фильтровать, сортировать, выводить данные при обращении к одному источнику данных через связь из другого источника данных. Рассмотрим на примере. На рисунке снизу представлено два источника данных - Categories и Products (представлено частично):
Связь организуется по ключевым колонкам данных. Ключевые колонки данных - это колонки данных в источниках, между которыми будет организована связь, содержащие ключи. К примеру, в приведенных источниках Categories и Products, ключевыми колонками данных являются колонки CategoryID. Следует отметить, что в данном примере имена ключевых колонок одинаковы, но это не является обязательным условием. Ключевая колонка данных в источнике данных Categories может называться CategoryID, а в источнике данных Products — CategoryNumber. Организуя связь между источниками данных Categories и Products, по ключевым колонкам CategoryID, где источник данных Categories является главным источником данных, а Products - подчиненным источником данных,связь между данными источниками будет иметь вид (представлено частично):
Как видно из рисунка, после организации связи, каждой записи из источника Categories будут сопоставлены записи из источника Products. В данном примере, записи Beverages сопоставлены записи Chai и Chang; записи Condiments сопоставлены записи Aniseed Syrup, Chef Anton's Cajun Seasoning, Chef Anton's Gumbo Mix, Grandma's Boysenberry Spread; записи Dairy Products сопоставлены Queso Carbales и Queso Manchego La Pastora.
Ограничения при создании связи
При создании или использовании связи между источниками данных, существуют следующие ограничения:
Выбранные источники данных (главный и подчиненный) должны быть одного типа, т.е. типы соединений должны быть одинаковы. Если типы соединений различны, то можно использовать свойство CashAllData. Наименование (Name) должно присутствовать и быть корректно, с точки зрения C# или VB.NET компилятора. Если имя в источнике зарезервировано, то необходимо добавить символ @ перед именем связи. К примеру, @relation. Колонки-ключи должны соответствовать всем правилам создания связи в ADO.NET: Их количество должно быть одинаковое; Их типы должны совпадать, т.е. если главная колонка-ключ типа string, то и подчиненная колонка-ключ должна быть типа string; Ключи должны быть указаны обязательно, т.е. связь без ключей создать невозможно.
|
Фильтрация
В генераторе отчетов Stimulsoft Reports есть возможность отфильтровать данные с использованием связи между источниками данных. Рассмотрим фильтрацию данных через связь на примере источника Products. Если необходимо отфильтровать данные по имени категории, т.е. по записям в колонке данных CategoryName источника данных Categories, то, при созданной связи между источниками данных Categories и Products, следует добавить фильтр с выражением: Products.RelationName.CategoryName == "имя категории", по которой будет происходить фильтрация. На рисунке снизу представлено окно фильтрации данных через связь между источниками данных:
где Products - название источника данных; RelationName - имя связи между источниками данных, т.е. обращение к другому источнику данных через связь; CategoryName - колонка данных в источнике данных, к которому обратились через связь.
Теперь при построении отчета, генератор отчетов отфильтрует данные из источника Products, и отобразит данные, которые относятся к категории Beverages. На рисунке снизу представлена страница построенного отчета:
|
Сортировка
При сортировке данных можно использовать не только колонки в указанном источнике, но и колонки в источнике, к которому можно обратиться через связь. Рассмотрим сортировку данных с использованием связи на примере источника Products. Если необходимо отсортировать данные по имени категории, т.е. по записям в колонке данных CategoryName источника данных Categories, то, при созданной связи между источниками данных Categories и Products, следует добавить сортировку с выражением: Products.RelationName.CategoryName. Также следует выбрать направление сортировки. В данном примере, направление сортировки По возрастанию (Ascending). На рисунке снизу представлено окно сортировки данных, через связь между источниками данных:
Теперь при построении отчета, генератор отчетов отсортирует данные из источника Products по названию категорий, в алфавитном порядке от А до Я. На рисунке снизу представлена страница построенного отчета:
|
Вывод информации
В генераторе отчетов Stimulsoft Reports есть возможность отобразить данные из связанного источника данных. К примеру, в отчете отображаются данные из колонок ProductName, UnitPrice, UnitslnStock источника данных Products. На рисунке снизу представлена страница построенного отчета (представлена частично):
Если необходимо отобразить вместо имени продукта название категории, при этом колонка данных с названиями категорий отсутствует в источнике данных Products, то это можно выполнить при помощи связи между источниками данных. Для этого, следует изменить в шаблоне отчета выражение в текстовом компоненте с Products.ProductName на выражение Products.RelationName.CategoryName. Используя связь между источниками данных, генератор отчетов в момент построения отчета, возьмет названия категорий из колонки CategoryName источника данных Categories, и подставит их вместо выражения. На рисунке снизу представлено страница построенного отчета с отображением названия категорий вместо имени продукта:
Как видно из рисунка, вместо имени продукта отображено название категории, к которой относится продукт.
|
Master-Detail отчет
В предыдущих главах (фильтрация, сортировка, вывод информации) была использована схема "от подчиненного-через связь-к главному источнику данных". При построении Master-Detail отчетов используется другая схема "от главного к подчиненному", т.е. когда связь работает в обратном порядке. К примеру, в шаблоне отчета расположен бэнд Данные (DataBand1). На данном бэнде размещен текстовый компонент со ссылкой на колонку данных, в которой содержатся имена категорий. Тогда при построении отчета, будет отображен список категорий. На рисунке снизу представлена страница отчета с именами категорий:
Допустим, необходимо каждой категории из данного списка сопоставить список продуктов. Для этого следует выполнить следующие действия: Добавить в шаблон отчета бэнд Данные (DataBand2); Указать источник данных, который содержит список продуктов, и связь между источниками данных; Выбрать Master компонент; Разместить на бэнде Данные (DataBand2) текстовый компонент со ссылкой на колонку данных из выбранного источника данных. К примеру, на колонку данных которая содержит наименование продуктов.
И тогда при построении отчета, каждой Master записи будет сопоставлен какой-то список Detail записей. На рисунке снизу представлена схема Master-Detail отчета:
|
Создание связи
В словаре данных можно создать связь между источниками данных. Для этого следует в контекстном меню источника данных или в меню Новый элемент (New Item), выбрать пункт Новая связь... (New Relation...).
В поле Наименование в источнике (Name in Source) указывается имя связи, по которому данная связь будет использоваться в оригинальных данных (к примеру в DataSet). Если связь между источниками данных, будет создана на основании связи в DataSet, то это наименование будет совпадать с полем Name. Данное поле обязательно для заполнения. Имя связи, которое используется для обращения к данной связи в отчете, указывается в поле Наименование (Name). Данное поле обязательно для заполнения. Подсказка для данной связи, которая будет отображаться пользователю, указывается в поле Псевдоним (Alias). Данное поле не является обязательным для заполнения. В поле Главный источник данных (Parent DataSource) выбирается главный источник данных. В поле Подчиненный источник данных (Child Data Source) выбирается подчиненный источник данных. В данном поле отображаются колонки из главного источника данных. Для создания связи необходимо выбрать минимум одну колонку, по которой будет организована связь. В данном поле отображаются колонки из подчиненного источника данных. Для создания связи необходимо выбрать минимум одну колонку, по которой будет организована связь. Параметр Active Relation устанавливает режим использования текущей связи по умолчанию. Например, при создании нового преобразования данных или панелей индикаторов.
|