Ireport - "o documento não contém página"

    ! Mensagem - "o documento não contém página" 

Preciso saber porque não aparece os dados no relatório quando eu chamo o evento pelo botao imprimir dentro do formulário.
e este mesmo relatório criado no ireport aparece os dados normalmente.

Quem pode me ajudar!!!

utilizo a IDE NetBeans 6.1 e o ireport integrado.

mensagem de erro:

init:
deps-jar:
compile:
run:
3
0 [AWT-EventQueue-0] WARN query.JRJdbcQueryExecuter - The supplied java.sql.Connection object is null.
CONSTRUÍDO COM SUCESSO (tempo total: 34 segundos)

Código do JButton Imprimir

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
Connection con = new AcessoMySql().getConnection();
HashMap parametros = new HashMap();
JasperPrint jp = JasperFillManager.fillReport("./jasper/RelProdutosMad.jasper", parametros, con);
Settings/Servidor/workspace/PauloVendas/src/br/com/sisvenda/jasper/ProdCadastrado.jasper", parametros, con);
JasperViewer jrv = new JasperViewer(jp);
jrv.setVisible(true);
}
catch(Exception e){
e.printStackTrace();
}

Olá Antonio;

Sua classe de conexão ao banco deve estar com algum probleminha. Veja que o erro indica que o objeto está retornando nulo.

Poste o código para podermos te ajudar, e se assim fizer, coloque ele entre as tags CODE para facilitar a leitura.

Abraço

Marco Aurélio

Olá Marco,

Na tentativa de resolver o problema… consegui em partes esta resolução e serve também para outros colegas que com certeza estão quebrando a cabeça…

Bom, a rotina que enviei estava com certeza faltando uma linha de conexão com o banco, entretanto eu fiz uma classe a parte para esta conexão, mas não estava funcionando… então incluí esta classe de comunicação com o banco e agora funcionou blz e a mensagem de erro “o documento não contém página” acabou, porém um detalhe: Abre a janela do relatório normalmente apenas com o título " Classic Template " e os dados não aparece… Veja e tente me ajudar…

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Connection con;
try{
Class.forName(“com.mysql.jdbc.Driver”);
con = DriverManager.getConnection(“jdbc:mysql://localhost/sisvenda?user=root&password=root”);
HashMap parametros = new HashMap();
JasperPrint jp = JasperFillManager.fillReport("./jasper/RelProdutosMad.jasper.jasper", parametros, con);
JasperViewer jrv = new JasperViewer(jp);
jrv.setVisible(true);
}
catch(Exception e){
e.printStackTrace();
}

Estou no aguardo…

quote=fanama]Olá Antonio;

Sua classe de conexão ao banco deve estar com algum probleminha. Veja que o erro indica que o objeto está retornando nulo.

Poste o código para podermos te ajudar, e se assim fizer, coloque ele entre as tags CODE para facilitar a leitura.

Abraço

Marco Aurélio[/quote]

Olá Antonio;

Caso não tenha resolvido ainda, segue abaixo:

Vou descrever abaixo minhas classe para impressão do relatório, ok? Talvez seja útil para você.

O método abaixo, como pode perceber, recebe o nome do relatório e os parametros (utilizei ArrayList, mas o correto é adaptar para hasmap como vc vinha fazendo). É este método que chama o preview do relatorio.

    public void startRel(String relatorio, ArrayList al){
        JasperPrint relat=null;
        PrintRel print=new PrintRel();
            try {
                relat = print.gerar(relatorio,al);
                JasperViewer.viewReport(relat, false);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null,"Houve um erro ao imprimir o relatório, contacte o administrador: "+ex);
            }
    }

Observe que chamo um outro método, o PrintRel.gerar, um métdo que irá verificar a conexão com o banco e me retornar um objeto JasperPrint.:

package util;

import bean.Parametro;
import dao.DAO;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;

public class PrintRel{
    public PrintRel() {
    }

    public JasperPrint gerar(String nomeRelatorio, ArrayList al) throws SQLException {
        JasperPrint rel = null;
	try {
            DAO dao = new DAO();
            Connection conn = DAO.getConexao();
            HashMap map = new HashMap();
            
            Parametro par = new Parametro();
            
            for(int i=0; i<al.size();i++){
                par = (Parametro) al.get(i);
                map.put(par.getNome(), par.getConteudo());
            }
            
            rel = JasperFillManager.fillReport(nomeRelatorio, map, conn);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null,ex);
        }
    return rel;
    }
}

Abaixo segue o método getConexao:

    public static Connection getConexao() throws SQLException {
        Connection conn=null;
        try {
            Class.forName(driver);
            conn=DriverManager.getConnection(url,user,password);
        } catch (ClassNotFoundException ex) {

            ex.printStackTrace();
        }
        return conn;
    }

É um codigo antigo, sei que há melhorias (principalmente onde estou usando o AL) mas pode te dar uma ajuda pois está funcionando há um bom tempo.

Abraço!

Marco A.>