Você está na página 1de 7

SUB-RELATRIO COM JASPERREPORTS / iReports

Para desenvolver este exemplo, ser necessrio termos uma estrutura de tabelas como mostrado abaixo ou a estrutura que voc desejar, desde que possa ser utilizada como Master/Detail. Esta estrutura foi criada e testada em uma base Oracle 9i, ento ajuste os tipos para a base que voc utilizar.

VENDAS
ID_VENDA DATAVENDA COMPRADOR NUMBER(4,0) DATE VARCHAR2(60)

DETALHE
ID_DETALHE DESCRICAO QTD VALORUNT FID_VENDA NUMBER(4,0) VARCHAR2(60) NUMBER(2,0) NUMBER(15,2) NUMBER(4,0)

Se voc decidir utilizar a estrutura acima, preencha as tabela como abaixo. VENDAS JJ Comrcio de Massas Almeida & Almeida Secos e Molhados Anglica Derivados Mercearia Pais e Filhos DETALHE 10 5 20 15 50 12 25

253 254 255 256

01/04/2003 02/04/2003 02/04/2003 05/04/2003

300 301 302 303 304 305 306

Feijo Arroz leo Feijo Macarro Margarina Margarina

2,25 5,32 1,20 2,25 0,90 2,33 2,33

253 253 253 254 255 255 256

Com as tabelas preenchidas abra execute agora o iReport, pressione CRTL+N ou v ao menu File>> New.

Salve o arquivo como RelatorioVendas.xml. Agora vamos definir para o relatrio qual a sua origem, ou seja, qual o comando SELECT que ir gerar os dados deste relatrio. Para isso v ao menu Database >> Report query e preencha como mostrado abaixo. Aps informar a conexo e o SELECT clique em Read Fields para capturar os campos, Register Fields to report para 1

SUB-RELATRIO COM JASPERREPORTS / iReports


termos acessos a estes campos no relatrio e finalmente em Save to report para salvar o SQL no arquivo .xml gerado. Feche a janela.

Agora monte o design do relatrio mestre sua maneira ou utilize o exemplo abaixo:

Este o elemento para o sub-relatrio Agora v ao menu View >> Values form, clique na guia Parameters, pois aqui iremos adicionar um parmetro que ir apontar para o arquivo do sub-relatrio.

Clique no boto New e preencha os campos como mostrado abaixo. Depois clique em Ok e feche a janela de Values form.

SUB-RELATRIO COM JASPERREPORTS / iReports

necessrio aqui informar o caminho completo de localizao do sub-relatrio, ou seja, o nome do arquivo .xml compilado. Neste caso o subrelatrio ir se chamar SubRelDetalheVenda.

Agora selecione o elemento do sub-relatrio e mostre suas propriedades, temos as guias Subreport 1 e Subreport 2. Na guia Subreport 1 informamos para que na exibio do sub-relatrio seja utilizado a mesma conexo do relatrio mestre. Na guia Subreport 2 informamos o parmetro de localizao do sub-relatrio e ainda qual ser o valor a ser passa para o sub-relatrio, neste nosso caso iremos passar para o sub-relatrio o cdigo da venda.

Aqui temos o nome do parmetro definido em Values form.

Clique com o boto direito do mouse nesta rea e escolha Add parameter. E preencha como mostrado na imagem abaixo.

Terminamos aqui a definio do relatrio mestre, basta que voc compile agora o mesmo, v em Tools >> iReporterCompiler.

SUB-RELATRIO COM JASPERREPORTS / iReports

Inicie agora um novo relatrio, menu File >> New. Configure-o como mostrado abaixo. Aqui estamos apenas configurando a rea do relatrio um pouco menor que o padro, pois no corremos o risco de ter o sub-relatrio cortado na hora da gerao do relatrio.

Agora iremos definir a origem dos dados deste relatrio, para isso v em Database >> Report query. A princpio voc deve construir a clusula SQL para que traga os campos necessrios e assim registra-los ao relatrio. Aps ter os campos registrados voc ir refazer a clusula SQL de modo que na condio WHERE da mesma seja utilizado o parmetro que ser passado pelo relatrio mestre. Aps reconstruir a clusula SQL no esquea de salva-la no relatrio (Save to report).

SUB-RELATRIO COM JASPERREPORTS / iReports

Monte agora o sub-relatrio como mostrado abaixo ou sua maneira.

Depois de montado o relatrio vamos informar para o relatrio o parmetro que utilizado na clusula SQL, para isso v ao menu View >> Values form, clique na guia parameters e depois clique em New. Basta preenche como mostrado abaixo.

Salve o relatrio e compile o mesmo. Est pronto a gerao de sub-relatrio utilizando o JasperReports. Se tudo der certo teremos um relatrio como mostrado abaixo.

SUB-RELATRIO COM JASPERREPORTS / iReports

Para testa-lo realmente ser necessrio criar uma classe Java ou ento no caso da criao deste manual foi utilizado o servidor Tomcat e para isso criou-se o seguinte cdigo: <%@ page import="dori.jasper.engine.*" %> <%@ page import="dori.jasper.engine.util.*" %> <%@ page import="dori.jasper.engine.export.*" %> <%@ page import="java.util.*" %> <%@ page import="java.sql.*" %> <%@ page import="java.io.*" %> <% String varDriver = "<driver de conexo>"; String varLink = "<link para o banco de dados>"; String varUsuario = "<nome do usurio>"; String varSenha = "<senha do usurio>"; File reportFile = new File(application.getRealPath("/subrel/RelatorioVendas.jasper")); Map parameters = new HashMap(); parameters.put("ReportTitle", "Relatrio de Vendas"); parameters.put("BaseDir", reportFile.getParentFile()); Class.forName(varDriver); Connection varConexao = DriverManager.getConnection(varLink,varUsuario,varSenha); byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,varConexao); response.setContentType("application/pdf"); response.setContentLength(bytes.length); ServletOutputStream ouputStream = response.getOutputStream(); ouputStream.write(bytes, 0, bytes.length); ouputStream.flush(); 6

SUB-RELATRIO COM JASPERREPORTS / iReports


ouputStream.close(); %>

Espero que este pequeno manual ajude a quem est comeando. Aqueles que tiverem alguma dvida ou dica para melhora-lo podem entrar em contato: rogrio_macedo@netpar.com.br ou espero_linux@yahoo.com.br.

Este manual de livre distribuio, mesmo que no coloque o nome do autor original.

Rogrio Ribeiro Macdo JColtro Consultoria, Treinamento e Desenvolvimento Ituiutaba-MG / Curitiba-PR Para cada povo o seu idioma, para todos os povos o Esperanto.

Você também pode gostar