Ireport - Condição para exibição de um field

6 respostas
R

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?

6 Respostas

D

tenta usar betwean

entre 01-01-2010 a 31-01-2010

C

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

T

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

F

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.

C

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

R

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

Criado 15 de janeiro de 2010
Ultima resposta 19 de jan. de 2010
Respostas 6
Participantes 5