如何增加变量来计算标题,标题?

时间:2016-08-29 16:03:59

标签: variables count jasper-reports

我有一个JasperReports模板,我需要计算不同“细节带”的标题。

现在,由于标题可能会有所不同(某些数据集可能为空,然后整个波段未呈现),因此我想使用变量。

内置变量没有套件,因为它们没有“detail_band_count”或其他东西。

此外,在一个细节范围内并不总是标题,可以有1或10个以下细节带,其中2 - 10频段共享在第1频段中声明的相同标题。

然而,我设法以这种方式创建变量;但它只统计页面。

jasper_variable_count

是否有可能在变量访问上调用变量表达式?因此,只要我写$V{headline_COUNT}

,它就会一直递增

1 个答案:

答案 0 :(得分:2)

我很难看到如何使用变量,您可能需要重新构建报表,找到分组策略,因为您需要将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 key, V value)将返回上一个对象)并且每次计算元素时,将值加到参数图中。

显示计数值,您可以直接访问参数图。

 <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