1

Ich habe eine Variable in Jasper Reports mit einem Wert Klassenname java.math.BigDecimal gemacht. Ich habe den Ausdruck als:Warum bekomme ich den Konstruktor BigDecimal (Number) ist undefiniert?

new BigDecimal(PRODUCT($F{CurrentValue},100)).divide($V{current_val_total}) 

aber ich erhalte immer die Fehlermeldung:

The constructor BigDecimal(Number) is undefined 

und

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 
1. The constructor BigDecimal(Number) is undefined 
      value = new BigDecimal(PRODUCT (((java.math.BigDecimal)field_CurrentValue.getValue()),100)).divide(((java.math.BigDecimal)variable_current_val_total.getValue())); //$JR_EXPR_ID=18$ 
        <---------------------------------------------------------------------------------> 
2. The constructor BigDecimal(Number) is undefined 
      value = new BigDecimal(PRODUCT (((java.math.BigDecimal)field_CurrentValue.getOldValue()),100)).divide(((java.math.BigDecimal)variable_current_val_total.getOldValue())); //$JR_EXPR_ID=18$ 
        <------------------------------------------------------------------------------------> 
3. The constructor BigDecimal(Number) is undefined 
      value = new BigDecimal(PRODUCT (((java.math.BigDecimal)field_CurrentValue.getValue()),100)).divide(((java.math.BigDecimal)variable_current_val_total.getEstimatedValue())); //$JR_EXPR_ID=18$ 
        <---------------------------------------------------------------------------------> 
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) 
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$15(ReportControler.java:416) 
at com.jaspersoft.studio.editor.preview.view.control.ReportControler$5.run(ReportControler.java:341) 
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 

Wie kann ich dieses Problem lösen?

+3

Ich schlage vor, Sie verwenden eine Methode, die existiert, oder erstellen Sie eine, um diese Konvertierung durchzuführen. –

+0

Sie können wahrscheinlich 'toString()' auf der 'Nummer' nennen, die Sie von' PRODUCT' erhalten. –

Antwort

3

PRODUCT liefert eine java.lang.Number siehe Jasper Reports Functions.

Es gibt kein Konstruktor in java.math.BigDecimal, die java.lang.Number dauert.

Sie benötigen eine der Konstrukteure in api zur Verfügung zu verwenden, würde ich BigDecimal(double val) vorschlagen, damit die doubleValue() Aufruf der Funktion auf java.lang.Number

new BigDecimal(PRODUCT($F{CurrentValue},100).doubleValue()).divide($V{current_val_total}) 

oder String Wert von Number

new BigDecimal(PRODUCT($F{CurrentValue},100).toString()).divide($V{current_val_total}) 

zu verwenden Welcher "am besten" zu verwenden ist, hängt von der tatsächlichen Klasse Number ab, siehe Convert Java Number to BigDecimal : best way für weitere Informationen. Bei der Berichterstellung mit normaler Rundung wird es jedoch keinen großen Unterschied machen.

Verwandte Themen