2016-04-14 79 views
1

私は、値クラス名がjava.math.BigDecimalのJasper Reportsで変数を作成しました。私はと式を設定:コンストラクタ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.lang.Numberを取るjava.math.BigDecimalには、コンストラクタはありません。

あなたが故にjava.lang.Number

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

またはNumber

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

String値を使用する上でdoubleValue()関数を呼び出し、私はBigDecimal(double val)を示唆し、APIで使用可能なコンストラクタのいずれかを使用する必要があります使用するのに最適なものはどれですか?具体的なクラスはNumberです(詳細はConvert Java Number to BigDecimal : best wayを参照してください)。ただし、通常の丸めによるレポート生成では大きな違いはありません。

関連する問題