Связь один ко многим без SQL

Обсуждение Stimulsoft Reports.JAVA
Ответить
vowanchik
Сообщения: 3
Зарегистрирован: 20 мар 2024, 13:11

Связь один ко многим без SQL

Сообщение vowanchik »

Здравствуйте! Есть возможность создать связь между двумя таблицами типа "один-ко-многим" без использования SQL, чтобы вывести данные множества дочерних таблиц в DataBand как на скриншоте? По текущим настройкам в таблицу выводится одна какая-то случайная запись из множества, хотя в базе данных их несколько. Прикладываю скриншоты шаблона отчета и результата работы
Вложения
Общий вид шаблона.png
Общий вид шаблона.png (470.21 КБ) 4389 просмотров
Настройки связи.png
Настройки связи.png (397.08 КБ) 4389 просмотров
Результат в предпросмотре.png
Результат в предпросмотре.png (58.38 КБ) 4389 просмотров
Aleksey
Сообщения: 2967
Зарегистрирован: 22 апр 2010, 06:57

Re: Связь один ко многим без SQL

Сообщение Aleksey »

Здравствуйте,

Без примера с тестовыми данными что-то сказать сложно.

Также, попробуйте задать PrintIfDetailEmpty свойство для главного бэнда.

Спасибо.
Aleksey
Сообщения: 2967
Зарегистрирован: 22 апр 2010, 06:57

Re: Связь один ко многим без SQL

Сообщение Aleksey »

Здравствуйте,

А также, посмотрите как создаются отчеты со связями
https://www.stimulsoft.com/en/documenta ... report.htm

Спасибо.
vowanchik
Сообщения: 3
Зарегистрирован: 20 мар 2024, 13:11

Re: Связь один ко многим без SQL

Сообщение vowanchik »

Здравствуйте, подготовил пример отчета и тестовые данные в JSON формате.

Предположим, что в БД есть 2 таблицы: job и person. У person есть ссылка на job в качестве вторичного ключа. Допустим, в select запросе для job я выделил нужную мне запись и она там одна. Запрашиваю я её с помощью параметра, поэтому в зависимости от разных обстоятельств ищется какая-то запись из таблицы job. В select запросе person я запрашиваю все элементы из БД и делаю связь между двумя таблицами. Я создаю DataBand и ожидаю, что у меня будут выведены все записи person, относящиеся к конкретной записи job, исключая ненужные. В тестовых данных есть 3 записи с ссылкой на имеющуюся запись job, остальные 2 записи имеют произвольный вторичный ключ.

Если вывести на предпросмотр данный шаблон, то выводится первая запись из набора записей person, которая связана с моей записью job.

Данная идея связана с тем, что есть необходимость делать похожие отчеты практически без написания sql запросов с присоединением таблиц. В данном примере единственный sql запрос будет для таблицы job с поиском конкретной записи по id. Надеялись, что можно обойтись встроенными инструментами Stimulsoft.
Вложения
Пример отчета.mrt
(1.79 МБ) 15 скачиваний
Data.json
(649 байт) 19 скачиваний
Aleksey
Сообщения: 2967
Зарегистрирован: 22 апр 2010, 06:57

Re: Связь один ко многим без SQL

Сообщение Aleksey »

Здравствуйте,

Для "расскручивания" данных на странице отчета используются бэнды.
В вашем отчете только один databand с ссылкой на исчтоник job, в котором только одна запись.

Необходимо добавить второй бэнд с ссылкой на второй источник.

Спасибо.
Вложения
Пример отчета.mrt
(1.8 МБ) 14 скачиваний
Screenshot 2025-02-17 195029.png
Screenshot 2025-02-17 195029.png (146.15 КБ) 243 просмотра
vowanchik
Сообщения: 3
Зарегистрирован: 20 мар 2024, 13:11

Re: Связь один ко многим без SQL

Сообщение vowanchik »

Всё, понятно. Спасибо большое!
Aleksey
Сообщения: 2967
Зарегистрирован: 22 апр 2010, 06:57

Re: Связь один ко многим без SQL

Сообщение Aleksey »

Здравствуйте,

Пожалуйста.
Ответить