Перейти к содержанию

Связи (relations): различия между версиями

Материал из Химсофт Вики
Строка 11: Строка 11:
Первый способ дает возможность строить отчеты типа "главный-подчиненный" (master-detail).  
Первый способ дает возможность строить отчеты типа "главный-подчиненный" (master-detail).  


===Алгоритм===
Для этого используются два бэнда "Данные":
Для этого используются два бэнда "Данные":
*главный бэнд привязывается к главному источнику данных;
*главный бэнд привязывается к главному источнику данных;
Строка 17: Строка 18:
::<code>[Indicators.lab_id] == [LaboratoryFilter.lab_id]</code>.  
::<code>[Indicators.lab_id] == [LaboratoryFilter.lab_id]</code>.  


В результате отчет может выглядеть, например, так:
===Результат===
Итоговый отчет может выглядеть, например, так:


[[Файл: data_link_1.png|center|border]]
[[Файл: data_link_1.png|center|border]]

Версия от 09:18, 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].

В результате отчет будет выглядеть следующим образом:

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

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

Редактирование связи