é 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.
private void btnImprimirActionPerformed(java.awt.event.ActionEvent evt) {
int imprime=JOptionPane.showConfirmDialog(null, “Tem Certeza que Deseja Imprimir esse Recibo ?”,“Atenção”,JOptionPane.YES_NO_OPTION);
if(imprime==JOptionPane.YES_OPTION){
try {
HashMap filtro = new HashMap();
filtro.put(“os”, Integer.parseInt(cxtID.getText()));
JasperPrint print=JasperFillManager.fillReport("…/…/relatorios/recibo.jasper", filtro, NÃO SEI O QUE COLOCAR AQUI);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, “Erro ao Imprimir Recibo !”);
}
}
}
meu problema e justamente nessa linha > print=JasperFillManager.fillReport("…/…/relatorios/recibo.jasper", filtro, NÃO SEI O QUE COLOCAR AQUI);
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
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());
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));
public static byte[] gerarRelatorio(List<AlgumaCoisa> coisas) throws Exception {
//Esse forma de pegar o jrxml deve ser adaptado para seu cenario
InputStream jrxml = Faces.getResourceAsStream("/WEB-INF/relatorios/relatorioAlgumaCoisa.jrxml");
InputStream logo = Faces.getResourceAsStream("/WEB-INF/relatorios/imagens/brasao.gif");
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("IMAGEM_LOGO", logo);
JasperReport report = JasperCompileManager.compileReport(jrxml);
JasperPrint print = JasperFillManager.fillReport(report, parametros, new JRBeanCollectionDataSource(coisas));
return JasperExportManager.exportReportToPdf(print);
}
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.
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
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.
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.
int imprime=JOptionPane.showConfirmDialog(null, “Tem Certeza que Deseja Imprimir esse Recibo ?”,“Atenção”,JOptionPane.YES_NO_OPTION);
if(imprime==JOptionPane.YES_OPTION){
try {
Map filtro=new java.util.HashMap();
filtro.put(“id_recibo”, Integer.parseInt(cxtID.getText()));
JasperPrint print=JasperFillManager.fillReport(“C:/Users/informatica01/Documents/NetBeansProjects/SisAluguel/relatorios/recibo.jasper”,filtro,teste);
JasperViewer.viewReport(print,false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, “Erro ao Imprimir Recibo !” +e);
}