é o seguinte galera estou trabalhando com MVC, no jFrame que estou tentando chamar o relatorio estou importando a minha classe conexao crio um objeto pra essa classe. conexao conectaRelat=new conexao(); e no initcomponents estou inicializando a conexao > conectaRelat.conexao(), até ai tudo beleza mas la no meu botão imprimir que vai gerar o relatorio está assim.
Aí pelo que eu lembre vai a lista do teu dataset. Precisa de algum conteudo pra gerar o relatório. Mas se quiser gerar um relatorio em branco bota null
W
will92
como assim lista do meu dataset ?
M
Murilo_Fernandes
Do que é o relatório que tu quer gerar? Uma lista de alguma coisa?
W
will92
montei um recibo no ireport e passe a seguinte string sql: select * from tbl_recibo where id_recibo=parametroCriado, relatorio ja funciona so falta enviar o parâmetro e chamar ele no meu sistema o problema e nessa linha ja tentei no final dela colocar dessa forma pra ver se funciona > JasperPrint print=JasperFillManager.fillReport("…/…/relatorios/recibo.jasper", filtro, conectaRelato.conexao());
mas não vai assim
M
Murilo_Fernandes1 like
Eu usei uma vez desse jeito: carrega esse select em um arraylist lista, por exemplo. Aí nessa linha tu bota JasperPrint print=JasperFillManager.fillReport("…/…/relatorios/recibo.jasper", filtro, new JRBeanCollectionDataSource(lista));
W
will92
não deu certo dessa forma o select ja foi passado no ireport apenas estou tentando enviar o parâmetro pra ele
R
Rodrigo_Void
Recomendo vc fazer essa consulta via seu software e depois passar os dados por parâmetro já que não é uma lista
W
will92
não estou conseguindo, estou quebrando a cabeça a manhã toda
W
Solucao aceita
Weverton_Reis2 likes
Olá,
Eu utilizo essa abordagem:
publicstaticbyte[]gerarRelatorio(List<AlgumaCoisa>coisas)throwsException{//Esse forma de pegar o jrxml deve ser adaptado para seu cenarioInputStreamjrxml=Faces.getResourceAsStream("/WEB-INF/relatorios/relatorioAlgumaCoisa.jrxml");InputStreamlogo=Faces.getResourceAsStream("/WEB-INF/relatorios/imagens/brasao.gif");Map<String,Object>parametros=newHashMap<String,Object>();parametros.put("IMAGEM_LOGO",logo);JasperReportreport=JasperCompileManager.compileReport(jrxml);JasperPrintprint=JasperFillManager.fillReport(report,parametros,newJRBeanCollectionDataSource(coisas));returnJasperExportManager.exportReportToPdf(print);}
A
Ademiltonjlc1 like
O que ocorre ? algum erro ? Eu faço de um jeito bem parecido com o seu (escrevo o sql dentro do report e passo parametro em tempo de execução). Só uso um objeto diferente pros parametros - um array de JRParameter ao invés de HashMap, mas dá meio que na mesma.
W
will92
o que acontece e que tenho que passar minha conexão com o banco no final > print=JasperFillManager.fillReport("…/…/relatorios/recibo.jasper", filtro, conectaRelato.conexao()); mas da erro somente nessa linha
R
Rodrigo_Void
Não tem que! Nem recomendo. Pode passar apenas os dados, como já foi demonstrado.
W
will92
o que vai em coisas, algumas coisas e de onde vem esse faces?
W
Weverton_Reis
Lista<AlgumaCoisa> coisas; = Isso vai ser as informações do relatório (Exemplo: resultado de sua consulta no banco)
InputStream jrxml = Faces.getResourceAsStream( <- Esse trecho você vai ter que adaptar utilizando sua forma de carregar o arquivo
A
Ademiltonjlc
Qual o motivo para não recomendar ?
A
Ademiltonjlc
Qual o erro ?
R
Rodrigo_Void1 like
Não é erro. Apenas não é uma boa prática. As regras de negócio devem ficar na sua respectiva camada e não na VIEW/front. Isso é ainda pior que uma tela(jframe) executar uma SQL no banco, no padrão MVC isso é abominável. Também não se sai distribuindo conexões por aí para terceiros, deve ser restrito a camada controller do software.
W
will92
Obrigado pela força Galera tentei os métodos passados qui no tópico a tarde inteira mas não consegui adaptar ao meu projeto por falta da conhecimento (Sou iniciante). Vou absorver todas as dicas aqui passadas e passar a estudar mais afundo por meus códigos ficam uma verdadeira bagunça. Consegui resolver meu problema da seguinte forma. eu estava fazendo dessa forma > HashMap filtro=new HashMap(); ; então la na minha linha do JasperPrint print=JasperFillManager.fillReport dava erro depois de horas olhando o codigo fiz da seguinte forma Map filtro=new java.util.HashMap(); e gerou o relatorio normalmente. meu código ficou da seguinte forma.