Então, estou com um baita de um problema que não consigo achar NADA a respeito, já li diversos tutoriais, inclusive do Carlos Paixão; e em NENHUM há uma explicação/exemplo para isso. Bem, preciso fazer uma condicional do tipo:
Aparentemente tudo bem… mas não, não está nada bem, a condicional funciona, ele realmente verifica se é um C, e entra na primeira alternativa do Ternário. PORÉM, CONTUNDO; ele não faz a atribuição, diz que do lado esquerdo de uma Atribuição precisa-se de uma Variável… mas isso daí é uma variável.
Por favor, ajudem-me a solucionar tal problema pois ajudará centenas de pessoas que também estão com isso… sei disso pois no google não tem nada disso e este será o primeiro.
et.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. The left-hand side of an assignment must be a variable value = (java.lang.String)(((java.lang.String)field_debOuCred.getValue()).equals("C") ? ((java.lang.Double)variable_saldo.getValue()) = ((java.lang.Double)variable_saldo.getValue()) + ((java.lang.Double)field_valor.getValue()) : "Não tem Saldo");
O operador ternário não se aplica a qualquer if. As duas expressões se true ou false devem retornar um valor do mesmo tipo.
Em vez de ($F{debitoCredito}.equals("C")) ? $V{saldo} += $F{valor} : $V{saldo} -= $F{valor} deverá ser algo como $V{saldo}+= ($F{debitoCredito}.equals("C")) ? $F{valor} : -$F{valor}
[quote] 19/12/2011 09:01:13 Assunto: Re:Cálculos em IREPORT
O operador ternário não se aplica a qualquer if. As duas expressões se true ou false devem retornar um valor do mesmo tipo.
Em vez de
view plaincopy to clipboardprint?
($F{debitoCredito}.equals(“C”)) ? $V{saldo} += $F{valor} : $V{saldo} -= $F{valor}
deverá ser algo como
view plaincopy to clipboardprint?
$V{saldo}+= ($F{debitoCredito}.equals(“C”)) ? $F{valor} : -$F{valor}
[/quote]
Muito Obrigado, mas coincidência ou não, eu tinha acabado de testar isso e ainda sim caí no mesmo caso:
[code]
The left-hand side of an assignment must be a variable
value = (java.lang.Boolean)(((java.lang.Double)variable_saldo.getValue()) += (((java.lang.String)field_debOuCred.getValue()).equals(“C”)) ? ((java.lang.Double)field_valor.getValue()) : -((java.lang.Double)field_valor.getValue()) ); //$JR_EXPR_ID=20$[/code]
Esta é sem dúvidas a minha dúvida: Como fazer cálculos no IReport.
Então, seguindo isso:
[quote]view plaincopy to clipboardprint?
($F{debitoCredito}.equals(“C”)) ? $V{saldo}.add($F{valor}) : $V{saldo}.subtract($F{valor})
[/quote]
Me deparei com isso:
1. The method add(Double) is undefined for the type Double value = (java.lang.Double)((((java.lang.String)field_debOuCred.getValue()).equals("C")) ? ((java.lang.Double)variable_saldo.getValue()).add(((java.lang.Double)field_valorVenda.getValue())) : ((java.lang.Double)variable_saldo.getValue()).subtract(((java.lang.Double)field_valorVenda.getValue()))); //$JR_EXPR_ID=21$