Pessoal, estou precisando colocar uma condição em um text field para imprimi-lo somente quando a data atual for igual a janeiro de 2010. Criei um variável new java.util.Date() e no text fiel que quero colocar a condição(print when expression) estou colocando $V{Data atual} = 01/2010, mas não da certo. Alguém tem idéia de como concertar essa expressão?
Ireport - Condição para exibição de um field
6 Respostas
tenta usar betwean
entre 01-01-2010 a 31-01-2010
Olá, vejo a principio opções :
- Converter aData para String, atraves de um DateFormat e atraves da formatacao comparar com "01/2010,"
- Usar os metodos deprecated... para obter o mes e o ano...
- Criar uma Classe Utilitaria e fazer o report utilizar um método estatico que faz o serviço... que acho que seria o mais facil e correto.
public static boolean isAlgumaCoisa(int mes,int ano){
Date d = new Date();
Calendar c = Calendar.getInstance();
c.setTime(d);
int anoTmp = c.get(Calendar.YEAR);
int mesTpm = c.get(Calendar.MONTH);
return mes == mesTpm && anoTmp==ano;
}
O garnde problem é montar expressões muito complexas se vc for usar so o Ireport...
Primeiro de tudo, porque no relatorio você usou variable?
Solução: Altere seu $V para $F e no tipo utilize Date
e na print wheen expression coloque $F{data}.equals("01/2010 ");
nao lembro se tem que estar entre ""
é mais ou menos assim.
Att. Jonas
Cara crie uma variavel, e use o SimpleDateFormat para converter usa data em “MM/yyyy”
e na propriedade Imprimir quando expressão
vc coloca
new Boolean($V{data}.equals("01/2010"))
lembre-se que a variavel $V{data} deve ser do tipo string.
O Wrapper é pq o iReport não faz a conversão automatica.
Primeiro de tudo, porque no relatorio você usou variable?
Solução: Altere seu $V para $F e no tipo utilize Date
A variavel corresponde a data atual(inicializada com um new Date()), correto?
Se for isso, seria mais simples e (com maior performance ) colocar esta expressão:
(V{Data Atual}.get(Calendar.YEAR)==2010 && V{Data Atual}.get(Calendar.MONTH)==10)
Mas ao inves de um new Date… vc ira pegar um “Calendar.getInstance()”
[]s
Pessoal, muito obrigado pela ajuda! Todas foram de grande utilidade.
Acabei esquecendo de falar alguns detalhes:
Criei uma Variavel String no formato ‘yyyyMM’. A minha necessidade era exibir um field que correspondesse ao ano e o mes passado. Minha dificuldade era com expressões no Ireport… ai criei um new Boolean() e coloquei a clausula que eu queria e deu certo!
Meu problema é outro agora… Não to conseguindo passar o parametro da aplicação pro ireport. é um parametro no mesmo formato da variavel que criei, ele pega o valor certinho mas não tá passando.
Vou dar uma pesquisada aqui sobre passar parametro de uma aplicação para o ireport. Lembrando que qualquer ajuda é bem vinda! =D