Jasper reports 在另一个字段中使用表达式值
如何在另一个textfield中使用textfield表达式的结果 我有以下文本字段表达式:Jasper reports 在另一个字段中使用表达式值,jasper-reports,Jasper Reports,如何在另一个textfield中使用textfield表达式的结果 我有以下文本字段表达式: ( $P{currency}.equals( "EUR" ) ) ? $F{documentPeriodsRate} : $P{currency}.equals( "USD" ) && $F{documentHeadDocClass}.equals( "1" ) ? $F{documentPeriodsRate} / $F{foreignCurrencyUSDBid} : $P{curr
( $P{currency}.equals( "EUR" ) )
? $F{documentPeriodsRate}
: $P{currency}.equals( "USD" ) && $F{documentHeadDocClass}.equals( "1" )
? $F{documentPeriodsRate} / $F{foreignCurrencyUSDBid}
: $P{currency}.equals( "USD" ) && $F{documentHeadDocClass}.equals( "2" )
? $F{documentPeriodsRate} / $F{foreignCurrencyUSDAsk}
: $P{currency}.equals( "GBP" ) && $F{documentHeadDocClass}.equals( "1" )
? $F{documentPeriodsRate} / $F{foreignCurrencyGBPBid}
: $P{currency}.equals( "GBP" ) && $F{documentHeadDocClass}.equals( "2" )
? $F{documentPeriodsRate} / $F{foreignCurrencyGBPAsk}
: $P{currency}.equals( "CHF" ) && $F{documentHeadDocClass}.equals( "1" )
? $F{documentPeriodsRate} / $F{foreignCurrencyCHFBid}
: $P{currency}.equals( "CHF" ) && $F{documentHeadDocClass}.equals( "2" )
? $F{documentPeriodsRate} / $F{foreignCurrencyCHFAsk}
: $P{currency}.equals( "YEN" ) && $F{documentHeadDocClass}.equals( "1" )
? $F{documentPeriodsRate} / $F{foreignCurrencyJPYBid}
: $P{currency}.equals( "YEN" ) && $F{documentHeadDocClass}.equals( "2" )
? $F{documentPeriodsRate} / $F{foreignCurrencyJPYAsk}
: ""
我需要上面表达式的结果来计算另一个textfield。我试图将上述表达式放入变量$V{euroCalc}
中,并将上述文本字段表达式替换为变量$V{euroCalc}
,但随后出现以下错误:
Error filling print... Error evaluating expression :
Source text : $V{euroCalc}
Setting up the file resolver...
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $V{euroCalc}
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:884)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:421)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:406)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:457)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2037)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:771)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:281)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:144)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745)
at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Caused by: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
at boss_charterfaktura_document_list_interval_positions_1392719953257_176604.evaluate(boss_charterfaktura_document_list_interval_positions_1392719953257_176604:307)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190) ... 20 more
Print not filled. Try to use an EmptyDataSource...
使用表达式值进行其他计算的正确方法是什么?问题在于变量类型
字符串
Caused by: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
如果将其设置为双精度,则其工作正常