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.

253
254
255
256

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

300
301
302
303
304
305
306

VENDAS
JJ Comrcio de Massas
Almeida & Almeida Secos e Molhados
Anglica Derivados
Mercearia Pais e Filhos

Feijo
Arroz
leo
Feijo
Macarro
Margarina
Margarina

DETALHE
10
5
20
15
50
12
25

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