Relatório em tempo de execução - iReport [RESOLVIDO]
9 respostas
fredsilva.sistemas
Olá galera!
Tô querendo implementar um relatório, mas não tenho idéia de como fazê-lo.
É o seguinte:
Tenho um JFrame que tem os itens de um pedido contidos em um JTable e o código deste pedido contido em um JTextField, gostaria de passar para o relatório no iReport este código e para um sub relatório os itens que estão na JTable.
Então, tem uma apostila bem legal de jasper nesse site http://www.integrator.com.br entre e faça o seu cadastro, no setor de downloads tem duas apostilas que fala sobre como desenvolver relatórios com ireport, e também explica como fazer sua aplicação java (web ou desktop) chamar o relatorio feito em jasper.
Falou.
thiagocg
Olá, fredsilva.sistemas!!
Bom cara, se eu entendi bem o que vc precisa não vejo o porque de utilizar um subrelatorio, sendo que vc pode passar os dados sobre o pedido como parametros e a lista de itens em um List setando ele no relatorio atraves do JRBeanCollectionDataSource.
Segue um link onde tem um tutorial muito bom sobre como utilizar o JrBeanCollectionDataSource e mais dicas sobre ireport!
Olá, fredsilva.sistemas!!
Bom cara, se eu entendi bem o que vc precisa não vejo o porque de utilizar um subrelatorio, sendo que vc pode passar os dados sobre o pedido como parametros e a lista de itens em um List setando ele no relatorio atraves do JRBeanCollectionDataSource.
Segue um link onde tem um tutorial muito bom sobre como utilizar o JrBeanCollectionDataSource e mais dicas sobre ireport!
importjava.io.InputStream;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importnet.sf.jasperreports.engine.JRException;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource;importnet.sf.jasperreports.view.JasperViewer;publicclassInicio{publicvoidexibirRelatorio(){// Caminho do .jasper do relatorioStringcaminhoRelJasper="Livros.jasper";// Lista com beansListlistaLivros=getLivros();// Stream com o .jasperInputStreamrelJasper=getClass().getResourceAsStream(caminhoRelJasper);JRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(listaLivros);// Parametros do relatoriosMapparametros=newHashMap();JasperPrintimpressao=null;try{impressao=JasperFillManager.fillReport(relJasper,parametros,ds);JasperViewerviewer=newJasperViewer(impressao,true);viewer.setVisible(true);}catch(JRExceptione){System.out.println(e.getMessage());}}publicListgetLivros(){ListlistaLivros=newArrayList();Livrolivro=newLivro();livro.setTitulo("Use a cabeça! Padrões de Projeto ? Design Patterns");livro.setAutor("Freeman, Eric / Freeman, Elisabeth");livro.setIsbn("[telefone removido]");livro.setEditora("Alta Books");livro.setDescricao("Como você sabe que não quer reinventar a roda (ou, "+"pior, um pneu furado), "+"então você busca padrões de projetos");listaLivros.add(livro);livro=newLivro();livro.setTitulo("Entendendo e Dominando o Linux");livro.setAutor("Morimoto, Carlos");livro.setIsbn("[telefone removido]");livro.setEditora("Digerati");livro.setDescricao("Como o nome diz, este livro é uma obra destinada a "+"todos aqueles que "+"pretendem conhecer na prática e em detalhes os "+"principais recursos oferecidos pelo Linux");listaLivros.add(livro);livro=newLivro();livro.setTitulo("Guia de Certificação em Java ? Exame CX-310-035");livro.setAutor("Pereira, Rafael");livro.setIsbn("[telefone removido]");livro.setEditora("Ciência Moderna");livro.setDescricao("Este Guia de Certificação em Java é um livro "+"fundamental para preparar os"+" candidatos ao exame de programador Java da Sun, "+"a primeira e mais "+"requisitada certificação desta tecnologia.");listaLivros.add(livro);returnlistaLivros;}publicstaticvoidmain(String[]args){newInicio().exibirRelatorio();}}
Se for isso, é pq ele não esta achando o caminho onde vc salvou o seu .jasper, eu sempre crio uma pasta no projeto onde ficam todos os relatorios, dai sempre passo no caminho essa minha pasta.
Se for isso, é pq ele não esta achando o caminho onde vc salvou o seu .jasper, eu sempre crio uma pasta no projeto onde ficam todos os relatorios, dai sempre passo no caminho essa minha pasta.
Sera esse seu problema?
Valeu thiagocg!
Vou acetar isso aqui e depois posto o resultado.
T+
Se for isso, é pq ele não esta achando o caminho onde vc salvou o seu .jasper, eu sempre crio uma pasta no projeto onde ficam todos os relatorios, dai sempre passo no caminho essa minha pasta.
Sera esse seu problema?
E thiagocg, coloquei o relatório dentro do projeto e ainda assim não deu certo!
Acho que pode ser alguma coisa quanto aos parâmetros do iReport, pois eu adicionei os TextFields, mas não entendi como ele vai comunicar com a minha aplicação!
Se alguém tiver alguma idéia! Eu tô precisando disso para finalizar o meu sistema aqui!
Obrigado a todos!
T+
Olá Galera!
Neste tutorial que o Wesley Marra passou tem um exemplo bem fácil de fazer passando como parâmetro um ResultSet.
Por enquanto ele resolve o meu problema, mas se alguém tiver formas melhores de fazer. Posta aí!
Mais uma vez agradeço a todos pela ajuda!
T+
Se for isso, é pq ele não esta achando o caminho onde vc salvou o seu .jasper, eu sempre crio uma pasta no projeto onde ficam todos os relatorios, dai sempre passo no caminho essa minha pasta.
Sera esse seu problema?
Consegui resolver aqui Thiago! Ele não conseguia achar o relatório porque estava com problema nas seguites linhas:
importjava.io.InputStream;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importnet.sf.jasperreports.engine.JRException;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource;importnet.sf.jasperreports.view.JasperViewer;publicclassInicio{publicvoidexibirRelatorio(){// Caminho do .jasper do relatorioStringcaminhoRelJasper="Livros.jasper";// Lista com beansListlistaLivros=getLivros();// Stream com o .jasperInputStreamrelJasper=getClass().getResourceAsStream(caminhoRelJasper);JRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(listaLivros);// Parametros do relatoriosMapparametros=newHashMap();JasperPrintimpressao=null;try{StringjasperPrint=JasperFillManager.fillReportToFile("Livros.jasper",parametros,ds);JasperViewerviewer=newJasperViewer(jasperPrint,false,false);// O segundo false serve para que a janela do relatório fique: DISPOSE_ON_CLOSEviewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);viewer.setVisible(true);}catch(JRExceptione){System.out.println(e.getMessage());}}publicListgetLivros(){ListlistaLivros=newArrayList();Livrolivro=newLivro();livro.setTitulo("Use a cabeça! Padrões de Projeto ? Design Patterns");livro.setAutor("Freeman, Eric / Freeman, Elisabeth");livro.setIsbn("[telefone removido]");livro.setEditora("Alta Books");livro.setDescricao("Como você sabe que não quer reinventar a roda (ou, "+"pior, um pneu furado), "+"então você busca padrões de projetos");listaLivros.add(livro);livro=newLivro();livro.setTitulo("Entendendo e Dominando o Linux");livro.setAutor("Morimoto, Carlos");livro.setIsbn("[telefone removido]");livro.setEditora("Digerati");livro.setDescricao("Como o nome diz, este livro é uma obra destinada a "+"todos aqueles que "+"pretendem conhecer na prática e em detalhes os "+"principais recursos oferecidos pelo Linux");listaLivros.add(livro);livro=newLivro();livro.setTitulo("Guia de Certificação em Java ? Exame CX-310-035");livro.setAutor("Pereira, Rafael");livro.setIsbn("[telefone removido]");livro.setEditora("Ciência Moderna");livro.setDescricao("Este Guia de Certificação em Java é um livro "+"fundamental para preparar os"+" candidatos ao exame de programador Java da Sun, "+"a primeira e mais "+"requisitada certificação desta tecnologia.");listaLivros.add(livro);returnlistaLivros;}publicstaticvoidmain(String[]args){newInicio().exibirRelatorio();}}