quinta-feira, 12 de fevereiro de 2009

Incrementado variável, com valor inicial, de 1 em 1 a cada página no iReport 3.0.0

Esses dias um amigo e colega de trabalho, o Anselmo do blog que acompanho, resolveu algum problema cabeludo. Não perguntei o que era, só lembro dele dizendo: "Essa merece um post" e eu dei risada... Agora me encontro na mesma situação.

Acreditei que seria fácil fazer uma variável incrementar no iReport a partir de um valor inicial a cada página, porém após praticamente três horas de luta saí da frente do PC exausto, mas com a luta ganha!

Após diversas tentativas e buscas de como fazer essa tarefa, acreditei ser impossível conseguir o efeito que desejava, no entanto, logo chegou um insight que me deu novas esperanças. Pensei em utilizar mais uma varíavel. Deu certo, porém o valor na primeira página ficava em "null". Quando estava quase pensando em jogar a toalha veio outro insight e pensei "vou jogar a declaração desta variável auxiliar para cima da que é utilizada na página"... e para minha surpresa, deu certo!!!!

Depois da historinha, agora a parte interessante, como ficou as minhas variáveis:

Variável Gambi: esta varíavel inicia em 0 (zero) e a cada página tem seu valor incrementado em 1 (um).
Tipo de Classe da Variável: java.lang.Integer
Tipo de Cálculo: Contador
Resetar Tipo: Relatório
Tipo de Incremento: Nenhum
Variável de Expressão: $V{Gambi}
Valor Inicial da Expressão: new Integer(0)

Variável NumMemorando: esta é a varíavel que vai aparecer no relatório e que a cada página deve ser incrementada.
Tipo de Classe de Variável: java.lang.Integer
Tipo de Cálculo: Sistema
Resetar Tipo: Nenhum
Tipo de Incremento: Página
Variável de Expressão: new Integer ($P{NmrMmrInicial}.intValue() + $V{Gambi}.intValue())

Pronto, agora é só utilizar seu contado a partir de um valor inicial!

Mais uma vez, na lista de variáveis do iReport, a variável Gambi deve estar listada primeiro que a variável NumMemorando, senão você terá um valor "null" na primeira página.