2016-04-14 194 views
1

我在Jasper Reports中創建了一個值類名爲java.math.BigDecimal的變量。我設置的表達式:爲什麼我得到構造函數BigDecimal(Number)未定義?

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

,但我不斷收到錯誤:

The constructor BigDecimal(Number) is undefined 

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) 

我該如何解決這個問題?

+3

我建議你使用存在的方法或創建一個來做這種轉換。 –

+0

你可以在你從'PRODUCT'獲得的'Number'上調用'toString()'。 –

回答

3

PRODUCT返回一個java.lang.Number參見Jasper Reports Functions

沒有構造函數java.math.BigDecimal需要java.lang.Number

您需要使用API​​提供的建設者之一,我會建議BigDecimal(double val),因此呼籲java.lang.Number

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

doubleValue()功能使用的Number

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

String值哪一個「最好」使用取決於Number的實際等級,請參閱Convert Java Number to BigDecimal : best way瞭解更多信息。然而,在正常舍入的報告生成中,它並沒有太大的區別。

相關問題