我有一个JasperReports模板,在这里我需要计算不同的“细节乐队”的标题。
现在,由于标题可以更改(一些数据集可以是空的,然后整个带就不会呈现),所以我想为此使用一个变量。
内建变量没有套件,因为它们没有"detail_band_count“之类的东西。
此外,在一个细节乐队中并不总是有一个标题,可以有1或10个以下的细节乐队,其中2-10个乐队与在第1组中声明的标题相同。
但是,我设法以这种方式创建了一个变量;但是它只计算页面数。

是否有可能在变量访问上调用变量表达式?所以一旦我写了$V{headline_COUNT},它就会增加
发布于 2016-08-30 09:49:30
我很难理解如何使用变量,您可能需要重新构造报表,找到分组策略,因为您需要将incrementType设置为一个可用的值,而且您不能选择“头行”或类似的值。
但是,有一个解决方法可以用来计算使用参数map $P{REPORT_PARAMETERS_MAP}显示特定元素的时间。
用默认值定义计数参数(避免以null开头)
<parameter name="countReportElement" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[0]]></defaultValueExpression>
</parameter>现在,在您希望计数的任何文本字段或其他元素上,您可以使用一个假的printWhenExpression,以增量这个参数。
<reportElement x="0" y="262" width="320" height="25" uuid="8fa62997-ffa2-4777-923b-999d372ce09e">
<printWhenExpression><![CDATA[($P{REPORT_PARAMETERS_MAP}.put("countReportElement",((Integer)$P{REPORT_PARAMETERS_MAP}.get("countReportElement"))+1))!=null?true:false]]></printWhenExpression>
</reportElement>注意,三元操作总是计算true (因为Map.put(K键,V值)并将其放入参数映射中,则每次计算元素时,值增加一个。
要显示,您可以直接访问参数映射的计数值。
<textField>
<reportElement x="57" y="13" width="100" height="20" uuid="7ca30577-0ca9-47c2-91ae-c7002fbbfbf7"/>
<textFieldExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}.get("countReportElement")]]></textFieldExpression>
</textField>确保在报告中将evaluationTime设置为需要。
https://stackoverflow.com/questions/39210544
复制相似问题