У меня была похожая проблема, и вот как я решил это.
Во-первых, вам нужен параметр (или, может быть, переменная) с общим числом строк, и вам понадобится включенная переменная Group_COUNT, «Group» изменится в зависимости от имени вашей группы.
У меня был параметр с именем «IDS», List<Integer>
, используемый в запросе для получения данных, $P{IDS}.size()
дает мне количество строк. Я думаю, что вы также можете использовать включенную переменную "REPORT_COUNT".
Затем, самая раздражающая часть, вам НУЖНО сделать полосу детализации достаточно длинной, чтобы вместить все ваши данные (в моем случае 8 строк) и вставить изображение (или текстовый компонент) в каждую строку. Для этого компонента должны быть установлены 2 свойства: «Удалить строку, когда пусто» и «Печать при выражении», первое в true, а второе со следующим условием:
new Boolean($P{IDS}.size() < 2 && $P{IDS}.size() == $V{Group_COUNT}.intValue())
Вам придется заменить $P{IDS}.size()
на выражение, отражающее количество строк вашего запроса, а 2 на номер строки, если у вас есть хотя бы 1 строка, вы можете пропустить # 1. Начните с 2, и добавьте 1 для каждой строки, в вашем случае до 50! (Извините!)