ola pessoal
tenho um campo bigdecimal no ireport onde coloco a mascara de valor monetarionele para impressão ( 1.500,000 por exemplo )
agora coloquei um estilo no campo, para formatar ele, se for > 0 imprime azul, senao vermelho
dae tive que mudar o tipo do campo de bigdecimal para string
ai surge o problema, eu perco a mascara do valor monetario ( imprime 1500.000 )
como resolver
obrigado
Usa DecimalFormat… formata ele antes de incluir no dataSource.
Ou implementa um decorator pra moeda (o que eu acho mais saudável pra sua sanidade mental no futuro).
Abraço!
como eu formato ele antes de incluir no datasource ?
Google é vida:
[code]
/*
Este exemplo mostra como formatar moeda
usando a classe NumberFormat
*/
import java.text.*;
public class Estudos{
public static void main(String[] args){
double valor = 1234567.89;
NumberFormat nf = NumberFormat.getCurrencyInstance();
String valorFormatado = nf.format(valor);
System.out.println(valorFormatado);
}
}[/code]
Fonte: http://www.arquivodecodigos.net/dicas/java-formatando-moeda-usando-a-classe-numberformat-1831.html
Abraço!
O double ali pode virar um BigDecimal… te baseia nisso e GO AHEAD
mas to no ireport
Tá… tu tá passando isso como? O SQL tá dentro do iReport ou fora? Se tá fora, muda o tipo do retorno e enjoy!
dentro do ireport
tentei usar replace do ponto pela virgula
mas nao deu certo, deu erro na compilação
e mesmo assim nao formataria o campo corretamente
valores grandes 1.000 ou 10.000 vai sair 1000 ou 10000
confude com a quantidade de zeros
Então aborda de um jeito diferente… ao invés de pintar a string na mão, cria um style e aplica…
eu uso style, alias, que ja foi um sacrificio pra funcionar
( $V{total_entrada}.intValue() < 0 ) ? "<style forecolor='#FF0000'>" + $V{total_entrada} + "</style>" : "<style forecolor='#0033FF'>" + V{total_entrada} + "</style>"
Não, mestre… Style do iReport, não usando markup html do campo… vou ver se acho um exemplo aqui.
Cara, me veio uma solução pra ti.
Deixa o campo como BigDecimal, mesmo, mas cria dois, um sobre o outro, e põe uma expressão no “Print When Expression” pra ocultar / exibir um ou outro quando for negativo/positivo, e daí tu pinta com o forecolor, backcolor.
Me fiz entender?
Abraço!
assim funcionou
nao tinha pensando nisso
obrigado