Связь

YouTube

 

Видеоурок по созданию связи между источниками данных в Web дизайнере.

 

 

 

Связь создается между источниками данных и определяет, каким образом должны быть связаны данные из этих источников. При создании связи указываются ключи, роль которых выполняют колонки данных. В результате связь представляет собой соединение между источниками данных, на основании одной или нескольких ключевых колонок данных. Связь предоставляет возможность фильтровать, сортировать, выводить данные при обращении к одному источнику данных через связь из другого источника данных. Рассмотрим на примере. На рисунке снизу представлено два источника данных - Categories и Products (представлено частично):

 

 

 

Связь организуется по ключевым колонкам данных. Ключевые колонки данных - это колонки данных в источниках, между которыми будет организована связь, содержащие ключи. К примеру, в приведенных источниках Categories и Products, ключевыми колонками данных являются колонки CategoryID. Следует отметить, что в данном примере имена ключевых колонок одинаковы, но это не является обязательным условием. Ключевая колонка данных в источнике данных Categories может называться CategoryID, а в источнике данных ProductsCategoryNumber. Организуя связь между источниками данных 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.

 

 

Ограничения при создании связи

При создании или использовании связи между источниками данных, существуют следующие ограничения:

 

strel11 Выбранные источники данных (главный и подчиненный) должны быть одного типа, т.е. типы соединений должны быть одинаковы. Если типы соединений различны, то можно использовать свойство CashAllData.

strel11 Наименование (Name) должно присутствовать и быть корректно, с точки зрения C# или VB.NET компилятора. Если имя в источнике зарезервировано, то необходимо добавить символ @ перед именем связи. К примеру, @relation.

strel11 Колонки-ключи должны соответствовать всем правилам создания связи в ADO.NET:

information Их количество должно быть одинаковое;

information Их типы должны совпадать, т.е. если главная колонка-ключ типа string, то и подчиненная колонка-ключ должна быть типа string;

information Ключи должны быть указаны обязательно, т.е. связь без ключей создать невозможно.

 

 

Фильтрация

В генераторе отчетов 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). На данном бэнде размещен текстовый компонент со ссылкой на колонку данных, в которой содержатся имена категорий. Тогда при построении отчета, будет отображен список категорий. На рисунке снизу представлена страница отчета с именами категорий:

 

 

 

Допустим, необходимо каждой категории из данного списка сопоставить список продуктов. Для этого следует выполнить следующие действия:

strel11 Добавить в шаблон отчета бэнд Данные (DataBand2);

strel11 Указать источник данных, который содержит список продуктов, и связь между источниками данных;

strel11 Выбрать Master компонент;

strel11 Разместить на бэнде Данные (DataBand2) текстовый компонент со ссылкой на колонку данных из выбранного источника данных. К примеру, на колонку данных которая содержит наименование продуктов.

 

И тогда при построении отчета, каждой Master записи будет сопоставлен какой-то список Detail записей. На рисунке снизу представлена схема Master-Detail отчета:

 

 

 

Создание связи

В словаре данных можно создать связь между источниками данных.  Для этого следует в контекстном меню источника данных или в меню Новый элемент (New Item), выбрать пункт Новая связь... (New Relation...).

 

 

img1 В поле Наименование в источнике (Name in Source) указывается имя связи, по которому данная связь будет использоваться в оригинальных данных (к примеру в DataSet). Если связь между источниками данных, будет создана на основании связи в DataSet, то это наименование будет совпадать с полем Name. Данное поле обязательно для заполнения.

img_2 Имя связи, которое используется для обращения к данной связи в отчете, указывается в поле Наименование (Name). Данное поле обязательно для заполнения.

img_3 Подсказка для данной связи, которая будет отображаться пользователю, указывается в поле Псевдоним (Alias). Данное поле не является обязательным для заполнения.

img_4 В поле Главный источник данных (Parent DataSource) выбирается главный источник данных.

img_5 В поле Подчиненный источник данных (Child Data Source) выбирается подчиненный источник данных.

img_6 В данном поле отображаются колонки из главного источника данных. Для создания связи необходимо выбрать минимум одну колонку, по которой будет организована связь.

img_7 В данном поле отображаются колонки из подчиненного источника данных. Для создания связи необходимо выбрать минимум одну колонку, по которой будет организована связь.

img_8 Параметр Active Relation устанавливает режим использования текущей связи по умолчанию. Например, при создании нового преобразования данных или панелей индикаторов.
 

Информация

 

Редактор связи имеет встроенные проверки. В случае, несоблюдения ограничений при создании связи, пользователю будет отображено информационное сообщение с ошибкой. В этом случае, нажать кнопку Ок, до устранения недостатков, невозможно.