O documento não contem paginas

6 respostas
JuniorMcz

Boa Noite,
Quando peço pra visualizar no gerador ele mostrar normalmente o relatorio que fiz … mas quando eu chamo na aplicação aparece a msg : O documento não contem paginas

Alguem sabe dizer o q é ?

Informações :

NetBens 7.2

JasperReport 4.7.0

S.O. Win7

commos-digester 2.1.jar

6 Respostas

wagnerfrancisco

Ou o relatório realmente não contém páginas de acordo com os dados que você passou, ou, provavelmente, algum parâmetro está sendo passado errado para o relatório.

Cheque se os parâmetros estão sendo enviados corretamente (confira também o tipo deles!).

JuniorMcz
BancoDeDados bd = new BancoDeDados();
        
           
        String REPORT = "C://report2.jrxml";
        
        JasperReport JASP_REP = null;
        
        try {       
            JASP_REP = JasperCompileManager.compileReport(REPORT);
        } catch (JRException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
        JasperPrint JASP_PRINT = null;
        
        
        try {        
            JASP_PRINT = JasperFillManager.fillReport(JASP_REP, null,bd.getConexao());  // O que esta passando null é conexão.
        } catch (JRException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        JasperViewer.viewReport(JASP_PRINT);

Metodo que uso para conectar com Banco

public void conectar() throws Exception {
        
        try {
            Class.forName(driver);
            this.conexao = DriverManager.getConnection(getUrl(),getLogin(),getSenha());
        } catch (ClassNotFoundException | SQLException cnf) {
            JOptionPane.showMessageDialog(null,cnf);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

POR QUE A CONEXAO ESTA PASSANDO NULL ???

wagnerfrancisco

Aparentemente você não chamou o método bd.conectar(). Ele é chamado dentro da classe BancoDeDados?

JuniorMcz

Classe BancoDeDados

public BancoDeDados() {

        this.driver = "org.postgresql.Driver";
        this.login  = "postgres";
        this.senha  = "admin";
        this.url    = "jdbc:postgresql://localhost:5432/Dados";                 
    }

    public Connection getConexao() {
        return conexao;
    }

    public void setConexao(Connection conexao) {
        this.conexao = conexao;

public void conectar() throws Exception {
        
        try {
            Class.forName(driver);
            this.conexao = DriverManager.getConnection(getUrl(),getLogin(),getSenha());
        } catch (ClassNotFoundException | SQLException cnf) {
            JOptionPane.showMessageDialog(null,cnf);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    }

E em outra classe MAIN onde chamo o relatorio.

BancoDeDados bd = new BancoDeDados();
        
           
        String REPORT = "C://report2.jrxml";
        
        JasperReport JASP_REP = null;
        
        try {       
            JASP_REP = JasperCompileManager.compileReport(REPORT);
        } catch (JRException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
        JasperPrint JASP_PRINT = null;
        
        
        try {        
            JASP_PRINT = JasperFillManager.fillReport(JASP_REP, null,bd.getConexao());
        } catch (JRException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        JasperViewer.viewReport(JASP_PRINT);

Tem algo errado ??

wagnerfrancisco

Tem, tá faltando chamar o método conectar. É ele que inicializa a variável connection.

Na classe Main, vai ficar algo assim:

BancoDeDados bd = new BancoDeDados();

         bd.conectar(); //adicionei aqui. talvez vc precise fazer um tratamento de excecoes
        
           
        String REPORT = "C://report2.jrxml";
        
        JasperReport JASP_REP = null;
        
        try {       
            JASP_REP = JasperCompileManager.compileReport(REPORT);
        } catch (JRException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
        JasperPrint JASP_PRINT = null;
        
        
        try {        
            JASP_PRINT = JasperFillManager.fillReport(JASP_REP, null,bd.getConexao());
        } catch (JRException ex) {
            Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        JasperViewer.viewReport(JASP_PRINT);

P.S.: Não vai interferir nesse problema, mas sugiro que depois você pesquise sobre como abrir/fechar a conexão adequadamente.

JuniorMcz

Funcionou…

Obrigado!

Criado 30 de julho de 2012
Ultima resposta 30 de jul. de 2012
Respostas 6
Participantes 2