#jasper-reports #subreport #page-break
#jasper-отчеты #вложенный отчет #разрыв страницы
Вопрос:
У меня есть отчет jasper, в котором есть несколько вложенных отчетов. Большинство из них работают нормально, но по какой-то причине один из моих вложенных отчетов не разделяется, если он становится достаточно длинным, чтобы дойти до конца страницы, вместо этого он переходит обратно в начало своего раздела сведений и продолжает писать там, перезаписывая предыдущий текст. Я не вижу никакой разницы между этим вложенным отчетом и тем, который работает правильно. В настоящее время мой проект использует jasper-reports 1.2.5, но я попытался выполнить обновление до 4.0.1 (только для этого одного отчета), и результаты были теми же.
Это раздел jrxml, в который включен мой вложенный отчет, который не работает:
<subreport isUsingCache="true">
<reportElement
x="0"
y="172"
width="468"
height="21"
key="subreport-3"
positionType="Float"/>
<dataSourceExpression><![CDATA[$P{dataSourcePreviousYukonLicence}]]></dataSourceExpression>
<subreportExpression class="java.io.InputStream"><![CDATA[this.getClass().getResourceAsStream("/config/template/subreportPreviousYukonLicence2.jasper")]]></subreportExpression>
И это раздел для одного, который действительно работает:
<subreport isUsingCache="true">
<reportElement
x="0"
y="43"
width="468"
height="21"
key="subreport-2"
positionType="Float"/>
<dataSourceExpression><![CDATA[$P{dataSourceConvictionHistory}]]></dataSourceExpression>
<subreportExpression class="java.io.InputStream"><![CDATA[this.getClass().getResourceAsStream("/config/template/subreportConvictionHistory.jasper")]]></subreportExpression>
Сами вложенные отчеты оформлены очень похоже, со всеми группами, имеющими is isSplitAllowed="true"
, и они используют одинаковые шрифты и одинаковые типы элементов отчета.
Если у кого-нибудь есть какие-либо идеи, почему один разделился бы правильно, а другой нет, мы будем очень признательны за вашу помощь.
Комментарии:
1. У нас практически та же проблема. Похоже, это вызвано самим вложенным отчетом. Если мы используем только вложенный отчет напрямую и заполняем его таким количеством, что он не помещается на одной странице, он также начнет перезаписывать верхние строки.
Ответ №1:
У нас была такая же или, по крайней мере, чрезвычайно похожая проблема. Причина была не в отчете, а в определении вложенного отчета. Он был настроен на наличие нескольких столбцов, и когда он достиг последней строки отчета, он снова начинается сверху во втором столбце.
Установка его в один столбец исправила это. Ниже приведена упрощенная дельта в нашем случае
-<jasperReport ... columnCount="3" pageWidth="240" pageHeight="555" ...>
<jasperReport ... pageWidth="240" pageHeight="555" ...>
Теперь полоса начинается со следующей страницы, если вложенный отчет не помещается на текущей странице.