Связи (relations): различия между версиями
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) |
||
| (не показано 16 промежуточных версий этого же участника) | |||
| Строка 7: | Строка 7: | ||
Есть 2 способа построить отчет с подобными взаимоотношениями. | Есть 2 способа построить отчет с подобными взаимоотношениями. | ||
==Способ 1== | ==Способ 1 - Бэнды== | ||
Первый способ дает возможность строить отчеты типа | Первый способ дает возможность строить отчеты типа <code>главный-подчиненный</code> (<code>master-detail</code>). | ||
Для этого используются два бэнда | ===Алгоритм=== | ||
Для этого используются два бэнда <code>Данные</code>: | |||
*главный бэнд привязывается к главному источнику данных; | *главный бэнд привязывается к главному источнику данных; | ||
*подчиненный бэнд привязывается к подчиненному источнику данных; | *подчиненный бэнд привязывается к подчиненному источнику данных; | ||
*в фильтре подчиненного источника задается выражение | *в фильтре подчиненного источника задается выражение (сопоставление соответствующих полей). | ||
:<syntaxhighlight lang="java"> | |||
[Indicators.lab_id] == [LaboratoryFilter.lab_id] | |||
</syntaxhighlight> | |||
===Результат=== | |||
Итоговый отчет может выглядеть, например, так: | |||
[[Файл: data_link_1.png|center|border]] | [[Файл: data_link_1.png|center|border]] | ||
| Строка 25: | Строка 29: | ||
[[Файл: data_link_2.png|center|border|500px]] | [[Файл: data_link_2.png|center|border|500px]] | ||
==Способ 2== | ==Способ 2 - Связи== | ||
Второй способ позволяет из подчиненного источника обращаться к главному, учитывая имеющуюся связь между двумя источниками: | Второй способ позволяет из подчиненного источника обращаться к главному, учитывая имеющуюся связь между двумя источниками: | ||
| Строка 33: | Строка 37: | ||
Мы видим, что среди полей источника <code>Indicators</code> есть ссылка на родительскую таблицу <code>LaboratoryFilter</code>. | Мы видим, что среди полей источника <code>Indicators</code> есть ссылка на родительскую таблицу <code>LaboratoryFilter</code>. | ||
===Алгоритм=== | |||
Таким образом, для реализации такого типа отчета нужно: | Таким образом, для реализации такого типа отчета нужно: | ||
*[[Связи (relations)#Создание связи|создать связь между источниками данных]]; | *[[Связи (relations)#Создание связи|создать связь между источниками данных]]; | ||
| Строка 38: | Строка 43: | ||
*перетащить в дереве данных из подчиненного источника поле <code>[Indicators.ind_name]</code>. | *перетащить в дереве данных из подчиненного источника поле <code>[Indicators.ind_name]</code>. | ||
===Результат=== | |||
Итоговый отчет будет выглядеть следующим образом: | |||
[[Файл: data_link_4.png|center|border]] | [[Файл: data_link_4.png|center|border]] | ||
| Строка 48: | Строка 54: | ||
==Создание связи== | ==Создание связи== | ||
Для того чтобы создать связь: | |||
*в окне <code>Данные</code> нажать кнопку <code>Действия</code> и выбрать пункт <code>Новая связь...</code> - откроется окно <code>Редактор связи</code>: | |||
[[Файл: data_link_6.png|center|border]] | |||
*выбрать главную и подчиненную таблицы; | |||
*выбрать одну или несколько пар полей – для каждой таблицы соответственно; | |||
*закрыть редактор связи кнопкой <code>ОК</code>. | |||
Созданную связь можно увидеть в окне <code>Данные</code> (если выбрать подчиненный источник данных и раскрыть список его полей - среди полей мы увидим связь с родительским источником): | |||
[[Файл: data_link_3.png|center|border]] | |||
==Редактирование связи== | ==Редактирование связи== | ||
Для того чтобы отредактировать связь: | |||
*откройте список полей дочернего источника данных; | |||
*найдите нужную связь; | |||
*нажмите кнопку <code>Редактировать...</code> на панели инструментов. | |||
При этом будет вызван редактор связи, который мы рассматривали выше. | |||
Текущая версия от 09:35, 16 октября 2026
Между двумя источниками данных можно установить связь типа главный-подчиненный (или родительский-дочерний).
Например:
- одна запись в запросе
LaboratoryFilterможет иметь множество подчиненных записей в запросеIndicators; - оба запроса имеют поле
lab_id, по которому можно установить связь.
Есть 2 способа построить отчет с подобными взаимоотношениями.
Способ 1 - Бэнды
Первый способ дает возможность строить отчеты типа главный-подчиненный (master-detail).
Алгоритм
Для этого используются два бэнда Данные:
- главный бэнд привязывается к главному источнику данных;
- подчиненный бэнд привязывается к подчиненному источнику данных;
- в фильтре подчиненного источника задается выражение (сопоставление соответствующих полей).
[Indicators.lab_id] == [LaboratoryFilter.lab_id]
Результат
Итоговый отчет может выглядеть, например, так:

Если такой отчет запустить, то на печать будет выведен список показателей для каждой лаборатории со следующей структурой:

Способ 2 - Связи
Второй способ позволяет из подчиненного источника обращаться к главному, учитывая имеющуюся связь между двумя источниками:

Мы видим, что среди полей источника Indicators есть ссылка на родительскую таблицу LaboratoryFilter.
Алгоритм
Таким образом, для реализации такого типа отчета нужно:
- создать связь между источниками данных;
- перетащить в дереве данных из подчиненного источника поле родительского источника
[Indicators.LaboratoryFilter.lab_name]; - перетащить в дереве данных из подчиненного источника поле
[Indicators.ind_name].
Результат
Итоговый отчет будет выглядеть следующим образом:

Если его запустить, мы увидим следующее:

Создание связи
Для того чтобы создать связь:
- в окне
Данныенажать кнопкуДействияи выбрать пунктНовая связь...- откроется окноРедактор связи:

- выбрать главную и подчиненную таблицы;
- выбрать одну или несколько пар полей – для каждой таблицы соответственно;
- закрыть редактор связи кнопкой
ОК.
Созданную связь можно увидеть в окне Данные (если выбрать подчиненный источник данных и раскрыть список его полей - среди полей мы увидим связь с родительским источником):

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