Sie sind auf Seite 1von 10

Gerando relatrios com iReport e Java

Este tpico vem com finalidade informar, passo a passo, como criar um relatrio com o iReport e execut-lo atravs de uma aplicao em Java. Para melhor entendimento, no trabalharemos com o projeto em uma estrutura de camadas, todos os arquivos ficaro na pasta raiz do projeto.

Ferramentas utilizadas: iReport-1.2.5 Java (verso jre1.5.0_06) Eclipse (Lomboz) MySQL 5.0.18

Vamos considerar que voc j criou um esquema no mysql com o nome meuprojeto Execute este script para criar a tabela e inserir alguns registros:
/* MySQL Backup Source Host: Source Server Version: Source Database: Date: */

localhost 5.0.18-nt meuprojeto 2006/11/29 21:27:23

SET FOREIGN_KEY_CHECKS=0; use meuprojeto; #---------------------------# Table structure for tb_produtos #---------------------------CREATE TABLE `tb_produtos` ( `cod` int(11) NOT NULL auto_increment, `descricao` varchar(50) character set latin1 collate latin1_general_ci default NULL, `preco` double default NULL, PRIMARY KEY (`cod`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; #---------------------------# Records for table tb_produtos #---------------------------insert into tb_produtos values (1, 'camisa', '20'), (2, 'cala', '30'), (3, 'perfume', '70'), (4, 'cinto', '20'), (5, 'sapato', '100'), (6, 'cueca', '10'), (7, 'teste', '10');

J temos o esquema criado, a tabela e alguns registros, vamos abrir o iReport para criarmos o relatrio:

Abra o iReport e, caso ainda no tenha uma conexo ativa, siga os passos abaixo:

No menu, clique em Data e depois em Connectios/Datasources, voce ter uma tela como esta:

Clique em new e configure conforme a figura abaixo:

Se o usurio root necessitar de senha, informe-a em PassWord Clique em Test para verificar a conexo e depois em Save. Voc retornar pala a janela anterior, selecione a conexo e clique em Set as Default. Feche a janela

Vamos criar o relatrio da maneira mais rpida e prtica


Clique em Arquivo | Assistente de Relatrio Na janela informe a consulta para o relatrio, conforme figura:

Clique em Next, na prxima janela, coloque todos os itens para a janela da direita, conforme figura e clique em Next

No vamos ordenar por grupo, clique em Next novamente Na proxima janela, selecione Tabular Layout e classicT.xml, conforme figura:

Clique em Next e em Encerrar Voc ter algo assim:

Localize estes botes:

O primeiro compila o relatrio, o segundo exibe a estrutura (sem dados) e o terceiro exibe o relatrio com os dados.

Se voc ainda no salvou o relatrio, qualquer um que voce clique, ele vai pedir para que salve, faa isto e d o nome relatrio. Faa alguns testes com os botes, caso o relatrio no seja exibido, verifique os passos anteriores pois neste ponto voc j dever ver o relatrio pronto. Se ocorreu tudo bem, vamos alterar o ttulo, d um clique duplo em cima dele e altere para Relao de Produtos, veja:

e ficar assim.

Salve o relatrio novamente e feche o iReport. Lembra-se que o relatrio foi salvo com a extenso .jrxml ?? Bem, este arquivo normalmente utilizado para edio do relatrio mas, o que vamos utilizar ser o que o iReport gerou com a extenso .jasper. Verifique que ele j se encontra na pasta onde est instalado o iReport, mais adiante, quando estivermos criando a Aplicao em Java, eles devero ser copiados para a pasta raiz do projeto. Na ocasio oportuna lembrarei a voc Neste ponto j estamos com o relatrio pronto, vamos criar a Aplicao. A partir deste ponto, no sero necessrias as exibies de imagens, apenas informarei que arquivos devero ser criados (passando seu contedo), onde sero salvos e demais arquivos que devero ser copiados, ok? Abra o eclipse, crie um novo projeto java com o nome ProjRelatorio. Com o projeto selecionado, clique com o boto direito e em New e Folder, d o nome de lib Antes de tudo, vamos trazer os arquivos do pacote iReport para o projeto. Acesse a pasta lib do diretrio do iReport e copie os seguintes arquivos para a pasta lib do seu projeto. Confira pela imagem:

Observe que o ltimo arquivo mysql-connector-java-3.1.12-bin.jar pode ter uma verso diferente do que voce encontrar na pasta lib, no tem problema. Arquivos copiados? Vamos informar ao projeto que eles existem.

Com o projeto selecionado clique em Project | Properties Na janela que se abre clique em Java Build Path Selecione janela Libraries e clique em Add JARs Expanda sem projeto, clique na pasta lib, selecione todos os arquivos, clique em OK e novamewnte em OK.

Agora vamos criar os seguintes arquivos, conforme figura:

A funo de cada um:


ExcRepositorio.java Esta classe verifica erros quando do acesso base de dados, analisando abertura/fechamento gConexao.java Responsvel pela conexo com a base de dados principal.java Aplicao principal onde ser inserido um registro e apresentado o relatrio produto.java Classe utilizada para inserir produtos na base de dados repositorioProduto.java Responsvel pela insero do produto e tambm pela gerao do relatrio.

Eis o contedo dos arquivos: Salvar como: ExcRepositorio.java


1. public class ExcRepositorio extends Exception { 2. public ExcRepositorio(String mensagem) { 3. super(mensagem); 4. } 5. }

Salvar como: gConexao.java


1. import java.sql.Connection; 2. import java.sql.DriverManager; 3. import java.sql.SQLException; 4. 5. public class gConexao { 6. private static Connection con; 7. public static Connection getConexao() throws ExcRepositorio { 8. String driver = "com.mysql.jdbc.Driver"; 9. String url = "jdbc:mysql://localhost:3306/meuprojeto"; 10. String login = "root"; 11. String senha = ""; 12. try { 13. Class.forName(driver); 14. con = DriverManager.getConnection(url, login, senha); 15. } catch (ClassNotFoundException e) { 16. throw new ExcRepositorio("Driver no encontrado: " + e.getMessage()); 17. } catch (SQLException e) { 18. throw new ExcRepositorio("Erro abrindo conexo: " + e.getMessage()); 19. } 20. return con; 21. } 22. }

Salvar como: principal.java


1. import javax.swing.JOptionPane; 2. import net.sf.jasperreports.engine.JRException; 3. import net.sf.jasperreports.engine.JasperPrint; 4. import net.sf.jasperreports.view.JasperViewer; 5. 6. public class principal { 7. public static void main(String[] args) throws JRException { 8. repositorioProduto rep = new repositorioProduto(); 9. JasperPrint relat; 10. 11. //Insere mais um produto e exibe o relatrio 12. String desc = JOptionPane.showInputDialog("Descrio do produto: "); 13. double valor = Double.parseDouble(JOptionPane.showInputDialog("Valor: ")); 14. produto prod = new produto(desc,valor); 15. 16. try { 17. rep.inserir(prod); 18. relat = rep.gerar(); 19. JasperViewer.viewReport(relat, false); 20. } catch (ExcRepositorio e) { 21. JOptionPane.showMessageDialog(null, "Erro: " + e.getMessage()); 22. } 23. } 24. }

Salvar como: produto.java


1. public class produto {

2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

private int cod; private String descricao; private double preco; public produto(String desc, double preco){ this.setDescricao(desc); this.setPreco(preco); } public int getcod() {return cod;} public String getDescricao() {return descricao;} public double getPreco() {return preco;} public void setcod(int cod) { this.cod = cod; } public void setDescricao(String desc){ this.descricao = desc; } public void setPreco(double pc){ this.preco = pc; } }

Salvar como: repositorioProduto.java


1. import java.sql.Connection; 2. import java.sql.SQLException; 3. import java.sql.Statement; 4. import java.util.HashMap; 5. 6. import javax.swing.JOptionPane; 7. 8. import net.sf.jasperreports.engine.JRException; 9. import net.sf.jasperreports.engine.JasperFillManager; 10. import net.sf.jasperreports.engine.JasperPrint; 11. 12. public class repositorioProduto{ 13. 14. public repositorioProduto() {} 15. 16. public void inserir(produto prod) throws ExcRepositorio{ 17. String desc = prod.getDescricao(); 18. double preco = prod.getPreco(); 19. String SQL = "insert into tb_Produtos (descricao, preco) values " + 20. "('" + desc + "', " + preco + ")"; 21. 22. Connection conn = null; 23. Statement stat = null; 24. try { 25. conn = gConexao.getConexao(); 26. stat = conn.createStatement(); 27. stat.executeUpdate(SQL); 28. } catch (SQLException e) { 29. throw new ExcRepositorio("Erro na conexo ao inserir: " + e.getMessage()); 30. } finally { 31. if (stat != null) { 32. try { 33. stat.close(); 34. } catch (SQLException e) { 35. throw new ExcRepositorio("Erro ao fechar conexo: " + e.getMessage()); 36. }

37. 38. 39. 40. 41. 42. 43. 44. 45. 46.

} }

} public JasperPrint gerar() throws ExcRepositorio{ JasperPrint rel = null; try { Connection con = gConexao.getConexao(); HashMap map = new HashMap(); String arquivoJasper = "relatorio.jasper"; rel = JasperFillManager.fillReport(arquivoJasper, map, con); 47. } catch (JRException e) { 48. JOptionPane.showMessageDialog(null,e.getMessage()); 49. } 50. return rel; 51. } 52. }

Vamos agora copiar os arquivos relatorio.jrxml e relatorio.jasper da pasta do iReport para a pasta raiz do seu projeto (S precisamos do .jasper, mas deixe uma cpia do jxml como segurana.). Seu projeto deve est assim: Agora s executar, ser solicitado dados para insero de um produto, faa isto e j o veja includo no relatrio que ser exibido.

Das könnte Ihnen auch gefallen