Java Reporting com JasperReports e iReport Open Source – Parte II
JasperReports é uma solução open source poderosa e flexível para geração de relatórios. O visual designer iReport, permite tirar total vantagem do poder do JasperReports sem necessidade de conhecimento profundo do formato XML nativo JasperReports
John Ferguson Smart
Adicionando Título de Relatório e Data
Então agora podemos gerar um relatório com dados reais. Adicionemos agora um título na barra de título. Este título só será exibido no começo do relatório. Suponhamos que o título seja "Employees/service" seguido pela data do dia. Para inserir o texto "Employees/Service", apenas colocamos uma zona de texto estática na seção title (usar "Edit/Insert Element/Static Text" ou o ícone "T").
Agora, suponhamos que desejamos também exibir a data atual. Inserimos um novo campo texto ("Edit/Insert Element/Text Field"). Fazemos duplo clique no objeto campo texto (text field object) e a seguir, na aba "TextField" da janela (ver Figura 8).
Figura 8. Adicionar um Campo Data
Neste momento temos uma idéia do poder de JasperReports: sendo o JasperReport compilado uma classe Java, podemos usar qualquer expressão Java para auxiliar na construção do relatório, assim como também campos JasperReports, variáveis e parâmetros. Por exemplo, a expressão "TextField" é uma expressão Java e será interpretada como tal.
Para exibir a data atual, criamos apenas uma novo objeto Date() que será automaticamente instanciado como a data e hora atuais. A seguir, informamos ao JasperReports o tipo de expressão a ser usado (na classe Textfield Expression: java.util.Date), quando dever[a ser avaliada a expressão (Evaluation time – momento da Avaliação) e qual formato usar (“Pattern field” - "campo Formato").
Finalizando, adicionamos uma borda transparente ao redor do título ("Edit/Insert Element/Rounded Rectangle") e uma imagem ("Edit/Insert Element/Image") e então personalizamos as cores e fontes (ver exemplo na Figura 9).
Figura 9. O Relatório com uma Barra de Título
Calculando Totais
Vamos supor agora, que desejamos exibir o custo total de todos os salários dos empregados. Para calcular estes tipos de valores com o JasperReports, precisamos usar variáveis de relatório. Usamos variáveis de relatório para armazenar e calcular qualquer valor temporário necessário para o relatório, tais como totais, subtotais, médias, etc. Vejamos alguns detalhes importantes a respeito de variáveis de relatório:
· O tipo de classe variável (variable class type) tem que ser compatível com o tipo de campo (field type), para que os cálculos funcionem corretamente. Portanto, devemos configurá-lo como Doublé;
· O tipo de cálculo informa ao JasperReports como calcular a variável. Neste caso, configuramos como 'Sum', para achar a soma total de todos os valores do campo emp_salary;
· A expressão variável representa o valor a ser avaliado no cálculo. Esta expressão pode ter vários formatos:
o Uma expressão Java (por exemplo, New Date());
o $F para campos (por exemplo, "$F{emp_salary}");
o $V para variáveis (por exemplo, "$V{service_employee_count}");
o $P para parâmetros de relatório;
o $R para recursos localizados (localized resources).
Para exibir as variáveis de relatório, abrimos o menu "View/Report Variables". Precisamos adicionar uma nova variável para localizar o salário do empregado e calcular o valor total. Chamemos esta variável de total_salaries (ver Figura 10). Configuramos o tipo de classe da variável (variable class type) como Double e o tipo de cálculo (calculation type) como Sum.
Figura 10. Adicionando uma Variável Nova
Agora, precisamos avaliar o campo 'emp_salary', portanto informamos "$F{emp_salary}" como a expressão variávelv (variable expression).
A seguir, arrastamos esta variável para a seção Column Footer e adicionamos um texto de título apropriado (ver o relatório gerado na Figura 11). Seguindo os mesmos passos, podemos adicionar facilmente outros tipos de variáveis: médias, contas, valores mínimos e máximos, etc.
Figura 11. Calculando os Salários Totais