Связь
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.
Ограничения при создании связи
При создании или использовании связи между источниками данных, существуют следующие ограничения:
|
Фильтрация
В генераторе отчетов 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). На данном бэнде размещен текстовый компонент со ссылкой на колонку данных, в которой содержатся имена категорий. Тогда при построении отчета, будет отображен список категорий. На рисунке снизу представлена страница отчета с именами категорий:
Допустим, необходимо каждой категории из данного списка сопоставить список продуктов. Для этого следует выполнить следующие действия:
И тогда при построении отчета, каждой Master записи будет сопоставлен какой-то список Detail записей. На рисунке снизу представлена схема Master-Detail отчета:
|
Создание связи
В словаре данных можно создать связь между источниками данных. Для этого следует в контекстном меню источника данных или в меню Новый элемент (New Item), выбрать пункт Новая связь... (New Relation...).
|