Vous êtes sur la page 1sur 7

SUB-RELATÓRIO COM JASPERREPORTS / iReports

Para desenvolver este exemplo, será necessário 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, então ajuste os tipos para a base que você utilizar.

VENDAS
ID_VENDA NUMBER(4,0)
DETALHE
DATAVENDA DATE
COMPRADOR VARCHAR2(60) ID_DETALHE NUMBER(4,0)
DESCRICAO VARCHAR2(60)
QTD NUMBER(2,0)
VALORUNT NUMBER(15,2)
FID_VENDA NUMBER(4,0)

Se você decidir utilizar a estrutura acima, preencha as tabela como abaixo.

VENDAS
253 01/04/2003 JJ Comércio de Massas
254 02/04/2003 Almeida & Almeida Secos e Molhados
255 02/04/2003 Angélica Derivados
256 05/04/2003 Mercearia Pais e Filhos

DETALHE
300 Feijão 10 2,25 253
301 Arroz 5 5,32 253
302 Óleo 20 1,20 253
303 Feijão 15 2,25 254
304 Macarrão 50 0,90 255
305 Margarina 12 2,33 255
306 Margarina 25 2,33 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 relatório qual é a sua origem, ou seja, qual é o comando SELECT que irá gerar os
dados deste relatório. Para isso vá ao menu Database >> Report query e preencha como mostrado abaixo. Após
informar a conexão e o SELECT clique em Read Fields para capturar os campos, Register Fields to report para

1
SUB-RELATÓRIO COM JASPERREPORTS / iReports
termos acessos a estes campos no relatório e finalmente em Save to report para salvar o SQL no arquivo .xml
gerado. Feche a janela.

Agora monte o design do relatório mestre à sua maneira ou utilize o exemplo abaixo:

Este é o elemento para


o sub-relatório

Agora vá ao menu View >> Values form, clique na guia Parameters, pois aqui iremos adicionar um parâmetro que
irá apontar para o arquivo do sub-relatório.

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

2
SUB-RELATÓRIO COM JASPERREPORTS / iReports

É necessário aqui informar o caminho completo


de localização do sub-relatório, ou seja, o nome
do arquivo .xml compilado. Neste caso o sub-
relatório irá se chamar SubRelDetalheVenda.

Agora selecione o elemento do sub-relatório e mostre suas propriedades, temos as guias Subreport 1 e Subreport
2. Na guia Subreport 1 informamos para que na exibição do sub-relatório seja utilizado a mesma conexão do
relatório mestre. Na guia Subreport 2 informamos o parâmetro de localização do sub-relatório e ainda qual será o
valor a ser passa para o sub-relatório, neste nosso caso iremos passar para o sub-relatório o código da venda.

Aqui temos o nome do Clique com o botão direito do mouse nesta


parâmetro definido em área e escolha Add parameter. E preencha
Values form. como mostrado na imagem abaixo.

Terminamos aqui a definição do relatório mestre, basta que você compile agora o mesmo, vá em Tools >>
iReporterCompiler.

3
SUB-RELATÓRIO COM JASPERREPORTS / iReports

Inicie agora um novo relatório, menu File >> New. Configure-o como mostrado abaixo. Aqui estamos apenas
configurando a área do relatório um pouco menor que o padrão, pois não corremos o risco de ter o sub-relatório
cortado na hora da geração do relatório.

Agora iremos definir a origem dos dados deste relatório, para isso vá em Database >> Report query. A princípio
você deve construir a cláusula SQL para que traga os campos necessários e assim registra-los ao relatório. Após
ter os campos registrados você irá refazer a cláusula SQL de modo que na condição WHERE da mesma seja
utilizado o parâmetro que será passado pelo relatório mestre.

Após reconstruir a cláusula SQL não esqueça de salva-la no relatório (Save to report).

4
SUB-RELATÓRIO COM JASPERREPORTS / iReports

Monte agora o sub-relatório como mostrado abaixo ou à sua maneira.

Depois de montado o relatório vamos informar para o relatório o parâmetro que é utilizado na cláusula 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 relatório e compile o mesmo. Está pronto a geração de sub-relatório utilizando o JasperReports. Se tudo
der certo teremos um relatório como mostrado abaixo.

5
SUB-RELATÓRIO COM JASPERREPORTS / iReports

Para testa-lo realmente será necessário criar uma classe Java ou então no caso da criação deste manual foi
utilizado o servidor Tomcat e para isso criou-se o seguinte código:

<%@ 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 conexão>";
String varLink = "<link para o banco de dados>";
String varUsuario = "<nome do usuário>";
String varSenha = "<senha do usuário>";

File reportFile = new


File(application.getRealPath("/subrel/RelatorioVendas.jasper"));

Map parameters = new HashMap();


parameters.put("ReportTitle", "Relatório 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-RELATÓRIO COM JASPERREPORTS / iReports
ouputStream.close();
%>

Espero que este pequeno manual ajude a quem está começando. Aqueles que tiverem alguma dúvida ou dica
para melhora-lo podem entrar em contato: rogério_macedo@netpar.com.br ou espero_linux@yahoo.com.br.

Este manual é de livre distribuição, mesmo que não coloque o nome do autor original.

Rogério Ribeiro Macêdo


JColtro Consultoria, Treinamento e Desenvolvimento
Ituiutaba-MG / Curitiba-PR

Para cada povo o seu idioma, para todos os povos o Esperanto.

Vous aimerez peut-être aussi