2016-06-05 12 views
0

Ich versuche, eine Bandfußzeile nur dann zu drucken, wenn zwei Zahlen um mehr als zwei voneinander abweichen. Es ist mir egal, wenn der größere größer als 2 ist. Ich lege beim Ausdruck eine einfache Formel in den Ausdruck aber ich bekomme einen Fehler.Warum bekomme ich einen Fehler beim ABS-Ausdruck, wenn ich versuche, den Bandfuß zu drucken?

Ich habe dieses auf meinen Druck, wenn Ausdruck für eine Band Fußzeile:

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

aber ich erhalte eine Fehlermeldung:

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) 

Antwort

1

Die Jaspis-Report-Funktion ABS gibt eine java.lang.Number zurück, das ist eine abstrakte Klasse keines des arithmetischen oder logischen Operators wie +, unterstützen -, <,>, < =

Der einfachste Weg ist es, den Integer oder Double Wert aus den Number (intValue(), doubleValue() siehe Klassenmethoden)

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

Sie verwenden diese: new Boolean (ABS (neu Double ("5") - neu Double ("4")). IntValue()> 1)

Verwandte Themen