为什么我在尝试打印带页脚时 ABS 表达式出错



我试图只在两个数字相差超过 2 时打印带脚。 我不在乎哪一个如果更大,只是差异大于 2。 我在表达一个简单的公式时放入打印中,但我得到一个错误。

当表达乐队页脚时,我的打印件上有这个:

ABS($F{rop}-$V{Suggest_ROP}) >= 2.0

但是我收到一个错误:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. The operator >= is undefined for the argument type(s) Number, double
                value = ABS(((java.lang.Double)field_rop.getValue())-((java.lang.Integer)variable_Suggest_ROP.getValue())) >= 2.0; //$JR_EXPR_ID=15$
                        <------------------------------------------------------------------------------------------------------->
2. The operator >= is undefined for the argument type(s) Number, double
                value = ABS(((java.lang.Double)field_rop.getOldValue())-((java.lang.Integer)variable_Suggest_ROP.getOldValue())) >= 2.0; //$JR_EXPR_ID=15$
                        <------------------------------------------------------------------------------------------------------------->
3. The operator >= is undefined for the argument type(s) Number, double
                value = ABS(((java.lang.Double)field_rop.getValue())-((java.lang.Integer)variable_Suggest_ROP.getEstimatedValue())) >= 2.0; //$JR_EXPR_ID=15$
                        <---------------------------------------------------------------------------------------------------------------->
3 errors
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:215)
at net.sf.jasperreports.eclipse.builder.JasperReportCompiler.compileReport(JasperReportCompiler.java:195)
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.compileJasperDesign(ReportControler.java:439)

jasper report 函数 ABS 将返回一个 java.lang.Number,这是一个抽象类,不支持任何算术或逻辑运算符,如 +、-、<、>、<=

最简单的方法是从Number中获取IntegerDouble值(intValue()doubleValue()查看类方法)

ABS($F{rop}-$V{Suggest_ROP}).intValue() >= 2

你可以使用这个:new Boolean(ABS(new Double("5") - new Double("4")).intValue()> 1 )

最新更新