[RESOLVIDO EM PARTE] Programa Java não chama relatório com subrelatórios - IReport 4.5.0

5 respostas
SandroSoftwares

Bom dia gente! Pelo amor de Deus, quem puder me ajudar olha isso ai pra mim!

Tenho um relatório perfeitamente compilado no IREPORT 4.5.0 que quando executado por ele gera o relatório contendo 3 subrelatorios direitinho.

Mas quando tenho chamar via java não tem como. Dá sempre NullPointerException

esse chama o relatório:

private void jButtonOkFNRHctionPerformed(java.awt.event.ActionEvent evt) {
        if ((idHospedagem_Hospede == 0)) {
            JOptionPane.showMessageDialog(null, "Operação Inválida!\nEscolha o número da Ficha.", "Erro... ", JOptionPane.ERROR_MESSAGE);

        } else {
            try {
                caminhoJasper = "RELATORIOS\\FNRH\\FNRH.jasper";
                nomeRelatorio = "FNRH";
                RelatorioComParametros  relatorioComParametros = new RelatorioComParametros();
                try {
                    try {
                        relatorioComParametros.gerarRelatorioParametroFNRH(idHospedagem_Hospede, caminhoJasper, nomeRelatorio);
                    } catch (JRException ex) {
                        Logger.getLogger(JFrameTelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(JFrameTelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                }

            } catch (SQLException ex) {
                System.out.println("problema FNRH. Erro: " + ex.getMessage() + "\n\n");
            }
        }
    }

esse visualiza o relatório:

public void gerarRelatorioParametroFNRH(int idHospedagem_Hospede, String caminhoJasper, String nomeRelatorio) throws SQLException, ClassNotFoundException, JRException {

     
        HashMap parametroMapDadosFNRH = new HashMap();
        parametroMapDadosFNRH.put("idHospedagem_Hospede", idHospedagem_Hospede);
        parametroMapDadosFNRH.put("SUBREPORT_DIR", "D:\\Meus Documentos\\NetBeansProjects\\Oasis\\RELATORIOS\\FNRH\\");
   //isso ai tá certo????

          arquivoJasper = caminhoJasper;


        try {

            rel = JasperFillManager.fillReport(arquivoJasper, parametroMapDadosFNRH, conexao);
        } catch (NullPointerException ex) {
            JOptionPane.showMessageDialog(null, arquivoJasper+ "\n" + parametroMapDadosFNRH + "\n" + conexao.isClosed() + "\n" + ex);
        }
        JasperViewer.setDefaultLookAndFeelDecorated(false);

        JasperViewer j = new JasperViewer(rel, true);
        JDialog v = new JDialog(new javax.swing.JFrame(), nomeRelatorio, true);
        v.setSize(850, 700);
        v.setLocationRelativeTo(null);
        v.getContentPane().add(j.getContentPane());
        v.setVisible(true);

    }

5 Respostas

SandroSoftwares

Resolvido!!!

Estes caras salvaram meus dois últimos dias!

Após ter resolvido postei este comentário no site:

Cara, tenho que te homenagear! perdi dois dias só tentando resolver isso e vc me ajudou a descobrir que o erro estava no fato de que eu estava utilizando bibliotecas antigas. atualizei para versão atual e rodou legal!
Deus te abençoe!

ALELUIA!!!

Sandro

SandroSoftwares

Após atualizar versão meu código de chamada do relatório ficou:

public void gerarRelatorioParametroFNRH(int idHospedagem_Hospede, String caminhoJasper, String nomeRelatorio) throws SQLException, ClassNotFoundException, JRException {

        JasperPrint rel = null;
try {
      
                HashMap parametroMapDadosFNRH = new HashMap();
              
                parametroMapDadosFNRH.put("idHospedagem_Hospede", idHospedagem_Hospede);
                parametroMapDadosFNRH.put("SUBREPORT_DIR", "RELATORIOS\\FNRH\\");
    

                String arquivoJasper = caminhoJasper;

                rel = JasperFillManager.fillReport(arquivoJasper, parametroMapDadosFNRH, conexao);
                JasperViewer.setDefaultLookAndFeelDecorated(false);
                JasperViewer j = new JasperViewer(rel, true);
                JDialog v = new JDialog(new javax.swing.JFrame(), nomeRelatorio, true);
                v.setSize(900, 700);
                v.setLocationRelativeTo(null);
                v.getContentPane().add(j.getContentPane());
                v.setVisible(true);
            
        } catch (final JRException e) {
            JOptionPane.showMessageDialog(null, "Relatório não encontrado!", "Relatório", JOptionPane.ERROR_MESSAGE);
            System.out.println(e);
        }
    }
ViniGodoy

Por favor, ao postar tópicos, não deixe todas as letras do título maiúsculas.

SandroSoftwares

ViniGodoy

Ok! Obrigado pela correção!

SandroSoftwares

Colegas,

Resolvi esse problema mas com a resolução criei outro.

Como adicionei todas as bibliotecas do ireport no meu projeto o .jar que era de 5,7 MB passou a ser 71,7 MB.

Tá pesado que só…

O problema agora é: Será que todas essas bibliotecas contidas na pasta C:\Arquivos de programas\JasperSoft\iReport-4.5.0\ireport\modules[b]ext[/b] são realmente necessárias para gerar esse pdf???

tá brabo…

Sandro

Criado 8 de julho de 2012
Ultima resposta 9 de jul. de 2012
Respostas 5
Participantes 2