Pessoal, no netbeans ele encontra o relatório normal, mas quando vou pelo jar, ele não está encontrando. Já vi alguns tópicos por aqui sobre esse problema, mas mesmo assim não consegui resolver, pois eles falam que é apenas tirar o “src” do caminho da pasta onde está alocado o relatório. segue meu código!
Connectionconn=newSQLConnection().java_db();if(!jComboBox1.getSelectedItem().equals("Selecione...")&&procurar1.getDate()!=null&&procurar2.getDate()!=null){Mapp=newHashMap();p.put("tipoteste",jComboBox1.getSelectedItem());p.put("dataini",procurar1.getDate());p.put("datafim",procurar2.getDate());JasperReportrelatorio;JasperPrintimpressao;try{relatorio=JasperCompileManager.compileReport(newFile("").getAbsolutePath()+"/Relatorios/reprovadosgeral.jrxml");impressao=JasperFillManager.fillReport(relatorio,p,conn);JasperViewerview=newJasperViewer(impressao,false);view.setTitle("Relatório Reprovados");view.setVisible(true);}catch(Exceptione){}}else{JOptionPane.showMessageDialog(null,"Preencha todos os campos");}
Dica: se vc precisa fazer modificações no fonte do seu relatório antes de gerar ele, ai blz, do contrário, use o compilado (.jasper) sempre, evita retrabalho desnecessário.
R
Rafael16
que tipo de modificações Rodrigo? poderia ser mais especifico por favor?
R
Rafael16
não consegui resolver :s
Rodrigo_Void
QUALQUER. se vc só pega o jrxml, compila e gera o relatório, está sendo ineficiente.
Rodrigo_Void
não conseguiu e por que? oq vc fez? poste o código atualizado, como q eu vou saber oq vc tentou fazer
R
Rafael16
Não estou sabendo montar com o código q vc me mandou… está ficando em vermelho
Connectionconn=newSQLConnection().java_db();if(!jComboBox1.getSelectedItem().equals("Selecione...")&&procurar1.getDate()!=null&&procurar2.getDate()!=null){Mapp=newHashMap();p.put("tipoteste",jComboBox1.getSelectedItem());p.put("dataini",procurar1.getDate());p.put("datafim",procurar2.getDate());JasperReportrelatorio;JasperPrintimpressao;try{JasperPrintjp=JasperFillManager.fillReport(ClassLoader.getSystemResourceAsStream("com/foo/blah/Relatorios/reprovadosgeral.jasper"));// relatorio = JasperCompileManager.compileReport(new File("").getAbsolutePath()// + "Relatorios/reprovadosgeral.jrxml");impressao=JasperFillManager.fillReport(relatorio,p,conn);JasperViewerview=newJasperViewer(impressao,false);view.setTitle("Relatório Reprovados");view.setVisible(true);}catch(Exceptione){}}else{JOptionPane.showMessageDialog(null,"Preencha todos os campos");}
Rodrigo_Void
pô véi, vc nem alterou o nome dos pacotes, vc tem este pacote ‘com/foo/blah’ ?
Se ajuda!
R
Rafael16
pô véi, to falando q o erro ta na hora de montar q não to sabendo? me ajuda!
R
Rafael16
Tentei fazer assim
if(!jComboBox1.getSelectedItem().equals("Selecione...")&&procurar1.getDate()!=null&&procurar2.getDate()!=null){
Mapp=newHashMap();p.put("tipoteste",jComboBox1.getSelectedItem());p.put("dataini",procurar1.getDate());p.put("datafim",procurar2.getDate());try{
InputStreamcaminho=getClass().getResourceAsStream("/Relatorios/reprovadosgeral.jasper");JasperPrintprint=JasperFillManager.fillReport(caminho,p,conn);JasperViewerview=newJasperViewer(print,false);view.setTitle("Relatório Reprovados");view.setVisible(true);
}catch(Exceptione){
}
}else
{
JOptionPane.showMessageDialog(null,"Preencha todos os campos");
}
Estou ajudando, mas que fique claro que não estou aqui pra fazer pra vc.
seu erro inicial era q n conseguia carregar seu relatório. Agora seu problema é outro:
Neste caso, novamente, ao invés de ajudar a resolver, vou sugerir que mude sua lógica.
Como seu relatório pega os dados? ele mesmo faz uma consulta no banco? se sim, errado!
Por boas práticas o relatório não deve se conectar ao banco e fazer consultas, ele deve receber os dados da sua aplicação.
publicbooleangerarRelatorioFornecedores(){try{this.conectar();this.executarSQL("SELECT * FROM fornecedores;");JRResultSetDataSourcejrRS=newJRResultSetDataSource(getResultSet());// caminho do arquivo dentro dos pacotes InputStreamcaminhoRelatorio=this.getClass().getClassLoader().getResourceAsStream("ArquivosJasper/relatorioFornecedores.jasper");JasperPrintjasperPrint=JasperFillManager.fillReport(caminhoRelatorio,newHashMap(),jrRS);StringnomeArquivo="C:/rel.pdf";JasperExportManager.exportReportToPdfFile(jasperPrint,nomeArquivo);Filefile=newFile(nomeArquivo);try{Desktop.getDesktop().open(file);}catch(Exceptione){JOptionPane.showConfirmDialog(null,e);}file.deleteOnExit();}catch(Exceptione){e.printStackTrace();JOptionPane.showMessageDialog(null,e.getMessage(),"Erro:",JOptionPane.ERROR_MESSAGE);returnfalse;}returntrue;}