我的数据库中有一个列,它是ColorCode列(字段名$ F {COLORCODE}),其值为'B','R'和'G',我想分别计算它们的数量他们的颜色。
所以我有变量叫做countBlue,变量表达式是$ F {COLORCODE} =='B'并把它放在列页脚中但是报告计算了包含该列中R和G的所有内容,我做了比较吗?说错了吗?
我也将我的countBlue变量类设置为java.lang.Integer,计算为Count并重置类型为Report
p / s抱歉英语不好答案 0 :(得分:2)
您可以使用此表达式(计算:计数; 重置类型:报告; 增量输入:无):
<variable name="countBlue" class="java.lang.Integer" calculation="Count">
<variableExpression><![CDATA[$F{COLORCODE}.equals("B") ? "SomeNotNull" : null]]></variableExpression>
<initialValueExpression><![CDATA[Integer.valueOf(0)]]></initialValueExpression>
</variable>
或此(计算:没什么; 重置类型:报告; 增量类型:无):
<variable name="countBlue" class="java.lang.Integer">
<variableExpression><![CDATA[$F{COLORCODE}.equals("B") ? $V{countBlue} + 1 : $V{countBlue}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
您可以阅读变量here。
JasperReports Ultimate Guide说:
计算次数
计数变量在计数中包括非空 在评估变量的主表达式后返回的值 数据源中的每次迭代。计数变量必须始终为 数字类型。但是,它们可以使用非数字表达式 他们的主要表现因为引擎并不关心 表达式类型,但仅计算返回的非空值, 无论他们的类型。
只有变量的初始值表达式 应该是数字并且与变量的类型兼容,因为这 值将直接分配给count变量 初始化。