* Visite o ALJUG - http://aljug.blogspot.com - Noticias sobre a comunidade java alagoana e do mundo * Visite o blog Mundo Gamificado www.mundogamificado.com.br - E vamos mudar o mundo! *
Mostrando postagens com marcador Ireport. Mostrar todas as postagens
Mostrando postagens com marcador Ireport. Mostrar todas as postagens

sexta-feira, 20 de fevereiro de 2015

Valor Total no final da página JasperReport - Parte I

Olá pessoal, vou neste post passar mais uma dica de relatório que por muito tempo fiquei procurando e acabei aprendendo sozinho.
Faz tempo que queria escrever este post, mas só agora tive um tempo.

Como colocar o valor total na última pagina em um relatório criado no Ireport/JasperReport.

Nesse primeiro post vou explicar com uma base vinda de um arquivo XML.


Primeiro como atribuir o aquivo XML para ser uma base de dados, fácil, veja só:

1. Crie um novo relatório, com o modelo da sua preferência;
2. Quando chegar na etapa DataSource, em DataAdapter, como na figura abaixo, clique em [new];

Figura 1.Imagem da aba Data Source

3. Escolha a opção XML document;
4.Denomine um nome para o adaptador, procure o arquivo XML e marque a opção Use the report Xpath expression when filling the report.
5. Caso queria definir um padrão específico de data, como padrão brasileiro dd/MM/yyyy, é só digitar no campo Date pattern e também um padrão específico de numero, é só digitar no campo Number pattern, caso queria escolher um já predefinido é só apertar em create e escolher, em ambos os campos;
6. Aperte em Finish;
7. Aparecerá outra janela, desta vez, com as ramificações do arquivo XML, que fica ao seu critério, caso você deseja escolher a ramificação principal, ou as filhas, depois aperte em Next;
8. Escolha os campos que deseja utilizar no relatório;
9. Escolha o campo que deseja agrupar, aperte em next e depois aparecerá uma mensagem de Parabéns o processo terminou.

Pronto agora que começa a brincadeira de criarmos a variável que vai ser exibida na última pagina do relatório, para isso vamos criar a banda Last Page Footer; Veja na figura abaixo a banda:
Figura 2. Aba OutLine

Veja que está cinza, em cima dela click com o botão direito e escolha a opção Add Band, você vai notar que agora não está mais cinza, estará "vivo".
Agora nesta mesma aba tem um nó desta árvore que possui o nome de Variables clique com o botão direito do mouse e escolha a opção Create Variable, note que no lado esquerdo apareceu uma nova aba, como na figura abaixo:

Figura 3. Aba Variable

Uma coisa que chamo atenção é que, pelo menos neste arquivo xml que escolhi, todos os campos estão em String, então é necessário mudar para Double, pois aqui estou utilizando valores monetários, e para fazer isso no campo Value Class Name eu mudo para java.lang.Double. Defino um nome para a variável como ValorTotal, no campo Calculation coloco a função SUM e no campo expressão, coloco o campo que representa o valor, neste caso o campo Receita, que ficaria deste modo:


new Double($F{Receita})

Com isso vai transformar meu campo que é uma String, em uma variável Double.

Outra dica é no campo Increment Type é outro segredo da soma, do jeito que está agora [None] quer dizer que não vai haver nenhuma intervenção e será somado os valores de todos sem interrupção, caso você queira soma por página é só colocar a opção Page, se você agrupou e quer a soma do agrupamento então vai escolher a opção [Group] NomeDoCampo e assim por diante. Como eu quero todos os valores então eu vou deixar None.

Agora na aba OutLine, Figura 2, Veja que no nó Variable, apareceu o nome da variável que você criou, arraste até a aba Last Page Footer, pronto com isso você garante a soma no final da última pagina.

Outra Dica: Lembre-se de colocar o padrão, neste caso monetário, no campo, para isso é só selecionar o campo ir na opção Text Field e no campo pattern clicar em  [...] e escolher a opção mais apropriada.


Espero ter ajudado. Até qualquer dia, qualquer hora!
No próximo post a gente fala de como utilizar em arquivos que são referenciados a um banco de dados.


domingo, 6 de janeiro de 2013

java.lang.NoSuchMethodException do Ireport

 Olá pessoall,

Estou eu de volta escrevendo um post, pois bem hoje eu vou falar de um erro que eu estava que toda vez que ia gerar um relatório o erro apresentava, tinha feito tudo mais sem sucesso. O erro é esse abaixo:

Caused by: java.lang.NoSuchMethodException: Unknown property '' on class

Como vocês podem ver a rotina estava procurando a propriedade vazio, só que não existia essa propriedade de fato, porém como corrigir este caso?

Nada como velho e bom google, mas não encontrei nada em português que pudesse me ajudar então encontrei em um site chamado zkoss.org e vou mostrar como corrige isto.

O erro no log pode ser encotnrado desta maneira:

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : 
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

Com isso há uma propriedade em JRBeanCollectionDataSource que mostra a opção booleana para que espaços vazios nos JRXML sejam lidos, e é ai o segredo basta colocar um false para que não leia os espaços em branco então ficaria deste jeito:


JRBeanCollectionDataSource jrbcds = new JRBeanCollectionDataSource(data, false);

E assim corrige e não aparece mais o erro.

Espero ter ajudado.
Até a próxima.