BuZZ-dEE
BuZZ-dEE

Reputation: 6951

Use expression value in another field

How can I use the result from an textfield expression in another textfield?

I have the following textfield expression.:

( $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}
: ""

I need the result from the above expression for calculating another textfield. I tried to put the above expression in a variable $V{euroCalc} and replaced the above textfield expression with the variable $V{euroCalc}, but then I the following error.:

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...

What is the correct way to use the expression value for another calculation?

Upvotes: 0

Views: 3447

Answers (1)

BuZZ-dEE
BuZZ-dEE

Reputation: 6951

The problem was the variable type String.

Caused by: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String

If it is set to Double, then it works.

Upvotes: 2

Related Questions