3

我有一个碧玉报告,它有几个子报告。它们中的大多数都可以正常工作,但是由于某种原因,如果我的一个子报表变得足够长以到达页面末尾,它不会拆分,而是跳回到其详细信息部分的顶部并继续在那里写入,覆盖前一个文本。我看不出这个子报表和正常工作的子报表有什么区别。目前我的项目使用 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",并且它们使用相同的字体和相同类型的报表元素。

如果有人知道为什么一个人会正确拆分而另一个人不会,那么您的帮助将不胜感激。

4

1 回答 1

4

我们遇到了相同或至少非常相似的问题。原因不在报告中,而是在子报告的定义中。它被配置为有多个列,当它到达报告的最后一行时,它再次从第二列的顶部开始。

将其设置为单列可以解决此问题。以下是我们案例中的简化增量

-<jasperReport ... columnCount="3" pageWidth="240" pageHeight="555" ...>
+<jasperReport ...  pageWidth="240" pageHeight="555" ...>

现在,如果子报表不适合当前页面,则带从下一页开始。

于 2012-07-19T11:27:32.047 回答