我有一个Jasper报告,显示了一个帐单行项目列表。这些项目按结算周期进行分组,然后按项目是收费还是信用分组。对于有收费但没有积分的结算周期,我想在该期间的信用组中显示一个静态文本字段,表示“无信用”。如何才能做到这一点?
编辑添加:这假设我正在使用SQL查询来查找数据源,而不是自定义数据源。如果我自定义我的数据源,我可以在到达报告之前处理预处理,但我希望找到一种方法来解决Jasper跳过没有符合组标准的行的组的行为。
答案 0 :(得分:1)
如果您能够在数据源中计算每个组的总信用额度,那么您可以在静态文本上使用“print when expression”属性。 e.g:
new Boolean ($F{total_credits}.equals(0));
静态文本需要放在组页眉或页脚中,因为它在组详细信息部分中不起作用(它会打印多次)。
您可能需要创建变量而不是直接使用$F{total_credits}
- 我不确定JasperReports如何处理访问组页脚中的字段。您还可以在组标题中找到正确的total_credits,而在组页脚中却没有。
另一种方法是使用一个变量来计算组中的总信用额度。您需要将变量的“重置类型”设置为“组”,然后设置重置组。 Variable表达式类似于:
$V{myvariable} +
($F{credit_or_debit}.equals("credit") ? new Integer(1) : new Integer(0))
,初始值表达式为new Integer(0)
然后在组页脚中,您可以使用静态文本上的'print when expression'来查看变量。