Dicas para JasperReports/iReport
Estava procurando na internet materiais sobre iReport para me auxiliar num relatório que estou desenvolvendo, e encontrei estas dicas sobre o iReport e decidi compartilhar aqui no meu blog também:
Algumas considerações:
1) cuidado ao dar um nome para salvar o seu relatório no iReport. Apesar da ferramenta não exigir que esse nome seja o mesmo que você forneceu ao criar o relatório, o engine Jasper irá usar esse nome, e não o nome do arquivo, para gerar o .jasper e o .jrprint (o default). Por exemplo, se o seu relatório se chama MeuRelatorio, e o arquivo se chama mrelat.jrxml, os arquivos gerados serão MeuRelatorio.jasper e MeuRelatorio.jrprint e não mrelat.jasper nem mrelat.jrprint!
2) Cuidado com campos cujos valores podem ser grandes. Nas propriedades do campo (duplo clique), selecionar a aba TextField e marcar a opção stretch with overflow. Atenção: na aba common, existe o Stretch type, mas esse tem a ver com a posição relativa às outras colunas e não com o conteúdo do campo.
3) É possível criar fontes de relatório, que são fontes com características pré-definidas e que depois podem ser usadas por todo o relatório. No iReport, para criar uma fonte nova, ir no menu Visualizar – fontes do relatório, apertando depois o botão new e configurando a fonte. Para usar uma fonte dessas, ir nas propriedades do texto, clicar na aba fonts. O primeiro campo dessa aba é o report fonts, basta escolher.
4) Uso do printWhenExpression: elementos com essa expressão, só são impressos se a expressão (tipo Boolean) for verdadeira. Um exemplo:
new Boolean ($F{codCliente}).intValue() % 10 == 0)
Faz com que o campo codCliente só seja impresso se for múltiplo de 10.
5) outro recurso, digamos, avançado é o de scriptlets. Scriptlets são classes que extendem JRAbstractScriptlet ou JRDefaultScriptlet, que extende a anterior. Essas classes servem para implementar algum tipo de cálculo que não os já existentes (soma, média, contagem, etc…). As classes base oferecem métodos que são disparados automaticamente cada vez que um “evento de relatório” acontece. Exemplos: beforeColumnInit(), afterDetailEval(), beforePageInit(), e assim por diante.
Para usar um scriptlet num relatório (aparentemente só é possível usar um), é preciso fornecer o atributo scriptletClass do elemento. Esse elemento é referenciado pela variável REPORT_SCRIPTLET.
No iReport, isso é configurado em visualizar – propriedades do relatório, na aba scriptlet.
Fonte: http://rederia.net/2010/04/21/dicas-para-jasperreportsireport/