Prof. Fernando Freitas Esp. em Gestão e Docência Universitária/UNIFIMES nando@fimes.edu.br



Documentos relacionados
Geração de Relatório com JasperReports e ireport 1. Introdução

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. Rodrigo Hjort. Robson Ximenes

Geração de Relatório com JasperReports e ireport

Jasper ireport Ferramenta para desenvolvimento e geração de relatórios utilizando Java

Procedimentos de Implantação ireport x Protheus

Tutorial: Técnicas de Geração de Relatórios com JasperReports

Introdução a relatórios Crosstab com ireport/jasperreports

Persistência de Classes em Tabelas de Banco de Dados

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

WORD. Professor: Leandro Crescencio Colégio Politécnico 1

Veja abaixo um exemplo de como os dados são mostrados quando usamos o

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Manipulação de Banco de Dados com Java 1. Objetivos

Procedimentos para Reinstalação do Sisloc

Apostila de Programação IV. Módulo V

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

GERADOR DE RELATÓRIOS WINREPORT VERSÃO 2.0. Conteúdo

Passo a Passo do Orçamentos de Entrada no SIGLA Digital

Obs: É necessário utilizar um computador com sistema operacional Windows 7.

MANUAL DO GERENCIADOR ESCOLAR WEB

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

Programação Visual. ireport Introdução. Prof. Edwar Saliba Júnior Novembro de Unidade 07 ireport - Introdução

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Data Transformation Services (DTS) por Anderson Ferreira Souza

Aula 03 - Projeto Java Web

O serviço de Gateway Remoto é instalado em um computador, onde um ou diversos rádios móveis Hytera podem ser conectados via cabo USB e áudio.

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Impressão de Relatórios com Data Report Professor Sérgio Furgeri. A figura seguinte ilustra a geração de um relatório a partir de uma tabela de...

UFPel Departamento de Informática. Tutorial Google Docs. Profa. Lisane Brisolara de Brisolara

C# - Conexão com MySQL

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Android e Bancos de Dados

Manual do Visualizador NF e KEY BEST

Manual de Utilização do PLONE (Gerenciador de página pessoal)

WecDB WecDB Consulta Web Facilitada ao Banco de Dados

1. Escritório Virtual Atualização do sistema Instalação e ativação do sistema de Conexão...5

ÍNDICE... 2 POWER POINT Abas... 7 Salvando Arquivos... 8 Abrindo um arquivo LAYOUT E DESIGN... 13

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

Com criar relatório no Report Services do Microsoft SQL Server 2008 R2 integrado com o

Treinamento Sistema Condominium Módulo III

Manual SAGe Versão 1.2 (a partir da versão )

Bem vindo! Esta é a tela inicial do Webmail da Universidade federal de Juiz de Fora. O link de acesso é:

Manual do Painel Administrativo

Microsoft Access: Criar relatórios para um novo banco de dados. Vitor Valerio de Souza Campos

Livro Caixa. Copyright ControleNaNet

SILVIO COSTA MOREIRA UTILIZAÇÃO DAS FERRAMENTAS JASPERREPORTS E IREPORT PARA A GERAÇÃO DE RELATÓRIO EM APLICAÇÕES JAVA

Tela Inicial: O Banco de Dados e seus objetos:

Programa de Hematologia e Oncologia Pediátricos Diagnóstico Imunomolecular. Manual do sistema (Médico)

Relatórios com Quickreport

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

MANUAL DO ANIMAIL Terti Software

Escritório Virtual Administrativo

Power Point. Autor: Paula Pedone

Exemplo25 Leitura de dados de arquivos txt. Passos para a elaboração da aplicação:

Prática Sobre Servlets e JSP

JDBC Java Database Connectivity

Online Help StruxureWare Data Center Expert

GERENCIADOR DE CONTEÚDO

Análise de Dados do Financeiro

ASP.NET Gerando relatórios com o ReportViewer

JPA: Persistência padronizada em Java

Manual de Instalação e Configuração do SQL Express

1 Inicie um novo. Guia de Referência Rápida de Gerenciamento de Projeto para o Project projeto

Dois novos relatórios estão disponíveis nesta versão do Imobiliária 21. São eles: Devedores e Imóvel por Área. Veja abaixo como emitir cada um.

Criação Visual de Consultas. Curso: Técnico em Informática (Integrado) Disciplina: Banco de Dados Prof. Abrahão Lopes

Procedimentos para Instalação do Sisloc

Manual das funcionalidades Webmail AASP

Lição 1 - Criação de campos calculados em consultas

Principais Novidades Abril/2013 a Junho/2013

Usando o simulador MIPS

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

Aula 1 Acesso a Banco de Dados

Criação de Applets Package: Class Name Base Class: Generate header comments: Can run standalone: Generate Standard methods:

Microsoft Visual Studio 2010 C# Volume II

Manual de digitação de contas Portal AFPERGS

WORKSHOP Ferramenta OLAP IBM Cognos

Documentação. Programa de Evolução Contínua Versão 1.72

NewAgent enterprise-brain

ÍNDICE... 2 INTRODUÇÃO... 4

Portal Sindical. Manual Operacional Empresas/Escritórios

Manual do Blogilo. Mehrdad Momeny Tradução: Marcus Gama

Como funciona? SUMÁRIO

Manual do Usuário CFCWeb BA

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta:

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Treinamento. Módulo. Escritório Virtual. Sistema Office. Instruções para configuração e utilização do módulo Escritório Virtual do sistema Office

Manual do Almoxarifado SIGA-ADM

8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR 8VDQGRSDUkPHWURV

Manual do usuário. v1.0

DPAlmox - Windows MANUAL DO USUÁRIO

Manual do site do Comitê do Itajaí: como inserir e atualizar

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Manual de Utilização COPAMAIL. Zimbra Versão 8.0.2

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Leonardo Gresta Paulino Murta

Java na WEB Banco de Dados

REP idx. Manual de integração com Ponto Secullum 4

Conteúdo O que é?... 4 Histórico... 4 Onde Baixar?... 4 Diferença entre Firebird e o Interbase... 4 Como instalar?... 4 Instalando o Ibexpert...

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Transcrição:

Prof. Fernando Freitas Esp. em Gestão e Docência Universitária/UNIFIMES nando@fimes.edu.br

Aplicações normalmente precisam de algum tipo de relatório. Em Java existem alguns frameworks que podem ser utilizados para facilitar a geração destes relatórios. Dentre os frameworks, o JasperReports com ireport é um dos que faz mais sucesso, seja para web ou não.

JasperReports Framework open source escrito em Java para geração de relatórios. Biblioteca motor que transforma o arquivo JRXML em um relatório exportado para uma das extensões suportadas (PDF, HTML, etc) usando a fonte de dados especificada Design definido via XML Após codificado, o arquivo deve ser compilado, gerando assim um arquivo.jasper Desenvolvimento trabalhoso.

ireport Ferramenta que visa facilitar a construção de relatórios (layout) utilizando a biblioteca JasperReports através de uma interface gráfica desenvolvida em Swing. Fornece suporte à construção de relatórios complexos. Permite inserir tipos de objetos como textos estáticos, figuras geométricas, imagens, gráficos, sub relatórios entre outros. Elimina a necessidade de manipulação direta dos arquivos JRXML.

É possível adicionar complementos para acrescentar funcionalidades ou estender as existentes em um relatório. Entre eles estão: itext: extensão para gerar e manipular arquivos RTF, XML, HTML e PDF. JFreeChart: Geração de gráficos Apache POI: permite criar e manipular vários formatos do Microsoft Office, além da extensão OLE 2.

Campos (Fields) são áreas específicas no relatório que receberão diretamente os dados das colunas referenciadas. Ex: <field name= Nome class= java.lang.string /> Parâmetros são dados passados para a operação de preenchimento, que não podem ser encontrados normalmente na fonte de dados. <parameter name= TituloDoRelatorio class= java.lang.string /> Passados via código Java, através da classe HashMap. Ex: Map parametros = new HashMap( ); parametros.put( Cliente, Fulano de Tal ); Utilizados, por exemplo, na query do relatório SELECT * FROM cliente WHERE cliente = $P{Cliente}

Variáveis são utilizadas para armazenar resultados temporários necessários para geração do relatório podem referenciar tipos internos de cálculos, como contagem (count), soma (sum), média (average), menor (lowest), maior (highest), etc. Ex <variable name= SomaValorTotalCompra class= java.lang.double calculation= Sum > <variable expression> ${ValorProduto} </variable expression> </variable>

A ordem em que as variáveis são declaradas no relatório é importante. Podemos definir o nível no qual uma variável irá ser inicializada. Pode ser no início do relatório (uma única vez), a cada página, coluna ou grupo. <variable name= SomaValorTotalCompra class= java.lang.double resettype= Page calculation= Sum > <variable expression> ${ValorProduto} </variable expression> <initialvalueexpression> new Double( 0 ) </initialvalueexpression> </variable> Variáveis internas da ferramenta: PAGE_NUMBER, COLUMN_NUMBER, REPORT_COUNT, PAGE_COUNT, COLUMN_COUNT.

Expressões (Expressions) são utilizadas para especificar o conteúdo de campos de texto, na realização de cálculos freqüentes Todas elas são expressões Java que podem conter em sua sintaxe: campos: acessado com $F{nome} parâmetros: acessado com $P{nome} variáveis de relatório: acessado com $V{nome}. Exemplo de uma expressão: <textfieldexpression> Sr.(a) + $F{Cliente} + " realizou um total de compras no valor de " + $V{ValorTotalCompraSum} + " no dia " + (new SimpleDateFormat("dd/MM/yyyy")).format($F{DataCompra}) + "." </textfieldexpression>

O JasperReports divide o layout do relatório em áreas pré-definidas, chamadas seções ou bandas. As seções ou bandas, levam em considerção a estrutura visual de um relatório. São elas: background, title, pageheader, columnheader, detail, columnfoter, pagefooter, lastpagefooter, summary e nodata.

O conteúdo colocado na banda background é exibido como plano de fundo das páginas do relatório. Por padrão este é exibido em todas as páginas, mas isto pode ser configurado. O conteúdo da banda title aparece somente uma vez no começo do relatório. O que definimos na banda pageheader aparece no alto de cada página do mesmo. Esta parte pode, por exemplo, conter a data/hora e/ou o nome da organização. O columnheader lista nomes daqueles campos específicos que você quer apresentar. Por exemplo do Nome do empregado, Hora de Início, Hora de término, Horas trabalhadas, etc.

O detail é a banda onde os valores dos campos são apresentados. Por exemplo, Jorge Horacio, 12:00h, 18:00h, 06 horas O columnfooter pode indicar a soma de alguns dos campos. Por exemplo Total de horas trabalhadas: 180 O pagefooter aparece no final de cada página. Pode conter por exemplo, o número da página como 1 de 7. O lastpagefooter permite colocar uma informação diferenciada no rodapé da última página. O summary é a banda onde a informação inferida a partir dos dados da banda detalhe é indicada. Por exemplo, após ter listado as horas trabalhadas para cada empregado na banda detail, as horas totais trabalhadas para cada empregado podem ser apresentadas em um gráfico de pizza. A banda nodata é impressa quando não existem dados para impressão no relatório.

Às vezes pode ser necessário agrupar algumas informações em comum no seu relatório. O ireport permite que você crie seções adicionais de agrupamento: Group Header e Group Footer. A banda Group Header exibe as informações sobre o grupo (ex: nome do grupo), antes que as informações agrupadas sejam exibidas. Ex: Mamíferos Cavalo, Vaca, Elefante. Insetos Formiga, Mosca, Abelha. A banda Group Footer exibe informações finais do grupo (ex: total de registro no grupo), após as informações agrupadas terem sido exibidas. Ex: Cavalo, Vaca, Elefante. Total de Mamíferos: 3 Formiga, Mosca, Abelha. Total de Insetos: 3

O relatório pode ser desenvolvido no programa externo ireport que pode ser obtido no endereço http://community.jaspersoft.com/project/ireport-designer, ou pode-se incluir um plugin no eclipse que permite a criação e edição do relatório dentro do próprio eclipse. Utilizaremos a segunda opção.

Clique no menu Help > Eclipse Marketplace

Pesquise por jaspersoft studio Em seguida clique no botão Install. Siga os passos da instalação. Ao concluir a instalação, reinicie o Eclipse.

Antes de começar, crie o pacote relatorios Acesse o menu File > New > Jasper Report Nesse ponto, você pode optar por criar um relatório em branco (mais trabalhoso, porém mais flexível) ou utilizar um dos modelos oferecidos. Para o nosso exemplo, selecione o modelo Coffee Clique em Next

Indique o local onde o relatório deverá ser salvo. Em nosso exemplo, vamos deixar dentro do pacote relatorios. Clique em Next.

Neste ponto, você deve selecionar uma fonte de dados. O ireport provê suporte a diversas fontes de dados: JDBC, Hibernate, etc. Se não existir nenhuma configurada, clique em New. Se existir, selecione-a e pule os 3 próximos slides desta apresentação.

Nesta tela, selecione o tipo da fonte de dados. Em nosso exemplo iremos trabalhar com conexão JDBC, então selecione a opção Database JDBC Connection. Clique em Next

Nesta tela, informe os dados da conexão Qual o driver? Qual a url do banco de dados? Qual o usuário? Qual a senha? Após informar os dados acima, alterne para a aba Driver Classpath.

Nesta aba, informe o conector (arquivo.jar) do banco. Em nosso exemplo, informe o conector MySQL utilizado nos exemplos anteriores. Se você não possui, ele pode ser obtido no endereço: http://dev.mysql.com/download s/connector/j/ Clique no botão Test. Se os dados foram informados corretamente, você deverá obter uma mensagem de sucesso. Caso contrário, revise os dados informados. Clique em Finish.

Com a fonte de dados selecionada, informe o código SQL para obter os dados que irão preencher o relatório. Em nosso exemplo, digite: select * from autor Clique em Next.

Se a consulta estiver correta, esta tela deve exibir os campos retornados por ela, para que você selecione apenas os que serão exibidos no relatório. Em nosso exemplo, selecione os campos: id, nome, valor e validade. Clique em Next.

Nesta tela, você deve informar o(s) campo(s) pelo qual os registros serão agrupados. Em nosso exemplo, não haverá agrupamento de informações, logo, não selecione nenhum. Clique em Finish.

Após concluir, o eclipse deve alternar para a perspectiva Report Design que permite a edição do relatório.

No ireport é possível adicionar máscaras de formatação aos valores do tipo Date e Numérico. Para isto, selecione o campo a ser formatado, vá até as propriedades e selecione a aba Text Field. Localize a opção Pattern, clique na reticências e selecione o padrão desejado ou crie o seu próprio. Se algum campo estiver com valor nulo, o ireport irá imprimir por padrão a string null. Para alterar isto, vá até as propriedades e selecione a aba Text Field. Procure pela opção Blank when null e marque-a.

Após o desenho do relatório, devemos compilá-lo. Esse processo corresponde a gerar uma representação em formato binário do relatório. Resultado da compilação é um arquivo com a extensão.jasper. É essa representação que usamos com o JasperReport para preencher o relatório. Para que o eclipse faça a compilação e exibição dos arquivos.jasper, clique com o botão direito no nome do projeto e acesse a opção JasperReports > Toggle JasperReports Nature. A partir daí, a compilação do arquivo JRXML no eclipse é feita juntamente com a do projeto. Se a opção Build Automatically estiver ativa, ela deve ocorrer sempre que uma modificação for salva.

Uma vez compilado o relatório, pode-se chamar o relatório via Java, para que a aplicação exiba os relatórios desejados. A seguir conheceremos algumas classes que ajudam nesta tarefa. Atenção: É possível compilar o arquivo JRXML e gerar o arquivo.jasper via código java. Contudo, a menos que isto seja fundamental, recomenda-se compilá-lo previamente e só efetuar as requisições ao.jasper via código java, de forma a evitar constantes compilações a cada nova requisição do relatório.

Classe JRLoader Principais Métodos: loadobjectfromfile(java.lang.string str); loadobject(java.io.file file) loadobject(java.net.url url) loadobject(java.io.inputstream is);

Classe JasperFillManager Principal método: fillreport (estático) Retorna objeto JasperPrint Assinatura: JasperPrint fillreport( String sourcefilename, HashMap parameters, Connection connection);

Parâmetros de fillreport: String sourcefilename: corresponde ao nome do relatório compilado (.jasper). HashMap parameters: lista de parâmetros do relatório (e.g., título, data, sessão) Connection connection: conexão (JDBC) com a fonte de dados utilizada para preencher o relatório.

JRExporter Classe útil quando queremos exportar o relatório para diversos formatos. Exemplos: JRExporter jrpdf = new JRPdfExporter(); jrpdf. exportreport(); //exporta para pdf JRExporter jrhtml = new JRHtmlExporter(); jrhtml. exportreport(); //exporta para html JRExporter jrxls = new JRXlsExporter(); jrxls. exportreport(); //exporta para excel JRExporter jrodt = new JROdtExporter(); jrodt. exportreport(); //exporta para odt

Adicione os arquivos abaixo dentro de WebContent > WEB-INF > lib. Eles serão necessários na geração e exportação dos relatórios. commons-beanutils-x.x.x.jar commons-collections-x.x.x.jar commons-digester-x.x.jar commons-javaflow-x.jar commons-logging-x.jar groovy-all-x.x.x.jar itext-x.x.x.jar jasperreports-x.x.x.jar poi-x.x-x.jar Se não houver, crie o pacote util. Crie uma classe chamada RelatorioUtil.java

public class RelatorioUtil { public static final int RELATORIO_PDF = 1; public static final int RELATORIO_EXCEL = 2; public static final int RELATORIO_HTML = 3; public static final int RELATORIO_PLANILHA_OPEN_OFFICE = 4; public static final int RELATORIO_EDITOR_WORD = 5; public static final int RELATORIO_EDITOR_OPEN_OFFICE = 6; public StreamedContent gerarelatorio(hashmap<string, Object> parametrosrelatorio, JasperReport relatoriojasper, String nomerelatoriosaida, int tiporelatorio, Connection con) throws Exception { StreamedContent arquivoretorno = null; try { FacesContext context = FacesContext.getCurrentInstance(); String caminhorelatorio = context.getexternalcontext().getrealpath("/"); String caminhoarquivorelatorio = null; con); JasperPrint impressorajasper = JasperFillManager.fillReport(relatorioJasper, parametrosrelatorio, JRExporter tipoarquivoexportado = null; String extensaoarquivoexportado = ""; File arquivogerado = null;

switch (tiporelatorio) { case RelatorioUtil.RELATORIO_PDF: tipoarquivoexportado = new JRPdfExporter(); extensaoarquivoexportado = "pdf"; break; case RelatorioUtil.RELATORIO_HTML: tipoarquivoexportado = new JRHtmlExporter(); extensaoarquivoexportado = "html"; break; case RelatorioUtil.RELATORIO_EXCEL: tipoarquivoexportado = new JRXlsExporter(); extensaoarquivoexportado = "xls"; break; case RelatorioUtil.RELATORIO_PLANILHA_OPEN_OFFICE: tipoarquivoexportado = new JROdsExporter(); extensaoarquivoexportado = "ods"; break; case RelatorioUtil.RELATORIO_EDITOR_WORD: tipoarquivoexportado = new JRDocxExporter(); extensaoarquivoexportado = "docx"; break; case RelatorioUtil.RELATORIO_EDITOR_OPEN_OFFICE: tipoarquivoexportado = new JROdtExporter(); extensaoarquivoexportado = "odt"; break; default: tipoarquivoexportado = new JRPdfExporter(); extensaoarquivoexportado = "pdf"; break; }

caminhoarquivorelatorio = caminhorelatorio + File.separator + nomerelatoriosaida + "." + extensaoarquivoexportado; arquivogerado = new java.io.file(caminhoarquivorelatorio); tipoarquivoexportado.setparameter(jrexporterparameter.jasper_print, impressorajasper); tipoarquivoexportado.setparameter(jrexporterparameter.output_file, arquivogerado); tipoarquivoexportado.exportreport(); arquivogerado.deleteonexit(); InputStream conteudorelatorio = new FileInputStream(arquivoGerado); arquivoretorno = new DefaultStreamedContent(conteudoRelatorio, "application/" + extensaoarquivoexportado, nomerelatoriosaida + "." + extensaoarquivoexportado); } catch (JRException e) { throw new Exception("Não foi possível gerar o relatório.", e); } catch (FileNotFoundException e) { throw new Exception("Arquivo do relatório não encontrado.", e); } return arquivoretorno; } }

Altere sua classe AutorBean.java e adicione o código a seguir. Faça os import necessários: private StreamedContent retorno; private Integer tipo; public StreamedContent getretorno() { imprimir(); return retorno; } public void setretorno(streamedcontent retorno) { this.retorno = retorno; } public Integer gettipo() { return tipo; } public void settipo(integer tipo) { this.tipo = tipo; } public void imprimir() { String relatoriojasper = new String(); relatoriojasper = "/relatorios/autores.jasper"; FacesContext facescontext = FacesContext.getCurrentInstance(); try { URL urlrelatorio = getclass().getresource(relatoriojasper); JasperReport jr = (JasperReport) JRLoader.loadObject(urlRelatorio); Connection con = ConnectionFactory.getConnection(); this.retorno = new RelatorioUtil().geraRelatorio(null, jr, "relatorio", tipo, con); } catch (Exception ex) { facescontext.addmessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao visualizar certificado", "Detalhes: "+ ex.getmessage())); } }

Altere sua página de listagem de autores (listar.xhtml) e acrescente o código abaixo imediatamente antes da tag </h:form>: <p:outputlabel value="tipo:"/> <p:selectoneradio id="options" value="#{autorbean.tipo}"> <f:selectitem itemlabel="pdf" itemvalue="1" /> <f:selectitem itemlabel="xls" itemvalue="2" /> <f:selectitem itemlabel="html" itemvalue="3" /> <f:selectitem itemlabel="ods" itemvalue="4" /> <f:selectitem itemlabel="docx" itemvalue="5" /> <f:selectitem itemlabel="odt" itemvalue="6" /> </p:selectoneradio> <p:commandbutton ajax="false" value="emitir Relatório"> <p:filedownload value="#{autorbean.retorno}"/> </p:commandbutton>

Altere a página de listar autores (listar.xhml) e adicione o código abaixo para criar uma nova coluna no datatable. <p:column width="20%" headertext="relatório"> <p:commandlink value="gerar PDF" ajax="false"> <f:setpropertyactionlistener target="#{autorbean.autorselecionado}" value="#{autor}"/> <p:filedownload value="#{autorbean.autorretornado} /> </p:commandlink> </p:column>

Altere AutorBean.java e adicione o código abaixo: private StreamedContent autorretornado; public StreamedContent getautorretornado() { imprimirproduto(); return autorretornado; } public void setautorretornado(streamedcontent autorretornado) { this.autorretornado = autorretornado; } private void imprimirproduto() { String relatoriojasper = new String(); relatoriojasper = "/relatorios/autor.jasper"; FacesContext facescontext = FacesContext.getCurrentInstance(); try { URL urlrelatorio = getclass().getresource(relatoriojasper); JasperReport jr = (JasperReport) JRLoader.loadObject(urlRelatorio); HashMap<String, Object> parametro = new HashMap<String, Object>(); parametro.put("id", autorselecionado.getid()); Connection con = ConnectionFactory.getConnection(); autorretornado = new RelatorioUtil().geraRelatorio(parametro, jr, "relatorio", 1, con); } catch (Exception ex) { facescontext.addmessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao visualizar certificado", "Detalhes: " + ex.getmessage())); } }

Crie um novo relatório assim como o anterior. Após criar o produto, crie um novo parâmetro (Botão direito em Parameters > Create Parameter) chamado id

Altere o tipo do parâmetro criado (Selecione o parâmetro e vá em propriedades) para java.lang.integer. Edite o XML e acrescente no final da sua consulta sql a condição: where id = $P{id}

SANTOS, Ismael H. F. Módulo III Relatórios e Gráficos em Java. Disponível em: http://www.tecgraf.pucrio.br/~ismael/cursos/cidade_fpsw/aulas/modulo3_graficos_relatorios/java_relatorios.pdf. Acesso em: 03 de junho de 2013. TOFFOLI, Giulio. ireport User Manual. Disponível em: http://pt.scribd.com/doc/97594609/ireport- User-Manual. Acesso em: 05 de junho de 2013. ARAÚJO, Everton Coimbra de. Desenvolvimento para WEB com Java. Florianópolis: Visual Books, 2010. LUCKOW, Décio Heinzelmann; MELO, Alexandre Altair de. Programação Java para a WEB. São Paulo: Novatec Editora, 2010.