[Resolvido] Calcular diferença entre datas no ireport

6 respostas
marcos3

Pessoal, li e reli vários links que encontrei na internet (inclusive a maioria foi desse fórum), mas mesmo assim não consegui resolver minha dúvida.

Tenho um relatório que é preenchido com todos os cadastros de determinada tabela. Nesta tabela existe um campo com a data que indica desde quando aquele cliente utiliza os serviços da empresa. Preciso criar um campo neste relatório que estou fazendo onde seja possível mostrar quanto tempo já se passou (em anos) desde que cada cliente foi registrado no sistema.

Utilizo o ireport versão 5.1.0. Em resumo o que preciso fazer é obter a data atual do sistema e calcular a diferença desta em relação a data que consta na tabela.

Agradeço desde já pela atenção dos colegas.

6 Respostas

aix

Eu vejo 3 formas de fazer:

1 - calcula no Java e manda o valor pronto.
2 - calcula na query SQL
3 - no Ireporte crie uma expressão, ex:

$F{DATA_ATUAL}.getDate() - $F{DATA_OLD}.getDate()

eu faria no Java e enviaria o campo com o valor pronto.

marcos3

aix boa tarde!

Olha eu tentei criando uma variável no ireport mesmo e minha sintaxe ficou assim:

$V{dataAtual} - $F{dataAdmissao}

Sendo que a variável é do tipo java.util.Date e no campo “Variable expression” eu coloquei assim: new java.util.Date().

Gostaria que o relatório já trouxesse essa informação ao usuário, portanto seria a terceira opção que comentou.

fabioqb

@marcos3, assim como @aix, também recomendo que faça no Java, até pelo fato de ser importante você validar se as datas não são NULL, sua “dataAtual” ser maior que “dataAdmissao” (ou alguma outra regra), etc.

Dá para fazer no iReport? Possivelmente, se usar Calendar. Veja um exemplo:

Espero ter ajudado.

aix
<variable name="suaVariavel" class="java.lang.Number" resetType="None">
		<variableExpression><![CDATA[$F{DATA_ATUAL}.getDate() - $F{DATA_ADMISSAO}.getDate()]]></variableExpression>
	</variable>

<textFieldExpression class="java.lang.Integer"><![CDATA[$V{suaVariavel}]]></textFieldExpression>

aix

achei bem legal com Calendar, obrigado por compartilhar.

marcos3

Obrigado pessoal!

Criado 16 de fevereiro de 2016
Ultima resposta 5 de mar. de 2016
Respostas 6
Participantes 3