Ajuda IReport [URGENTE]

5 respostas
Radams_Venceslau

Olá galera estou tentando gerar um relatorio da seguinte forma:

Os dados serão setados em um Map e passados para o relatório RContrato.jasper que contem duas páginas estáticas só alguns campos serão preenchidos não precisaria no caso de criar uma conexao e passar para o metodo .fillReportToFile, até onde eu sei; se estiver errado me corrijam, porém está apresentando um JOptionPane com a seguinte mensagem ‘O Documento não contém páginas’ oO. Qual será problema que está acontecendo… onde estou errando? Segue a classe abaixo que uso pra gerar.

PS: No meu relatorio só existe um campo field $F{nome}

public class GeraReport implements Report{   
  
  
    public void getRelatoryContrato() {   
  
        Map parameters = new Hashtable();   
        parameters.put("nome", "Maria");   
  
        String path = "D:\\NetBeansProjects\\GerandoRelatorio\\build\\classes\\report\\RContrato.jasper";   
           
        try {   
            JasperFillManager.fillReportToFile(path, parameters);   
            JasperPrint jasperPrint = JasperFillManager.fillReport(path,parameters);   
            JasperViewer viewer = new JasperViewer(jasperPrint, false);   
            viewer.setVisible(true);   
        } catch (JRException ex) {   
            ex.printStackTrace();   
        }   
    }   
}

Desde já agradeço a atenção

5 Respostas

emmanuelrock

Olha uma classe re Relatorio que fiz cara:

package relatorio;

import banco.Conexao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JFrame;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class Relatorio {

    public Relatorio() {
    }

    public JasperViewer gerarRelatorio(String path, String consulta) {
        Conexao sqlconn = Conexao.getInstancia();
        sqlconn.connect();
        PreparedStatement stmt = sqlconn.setPreparedStatement(consulta);
        ResultSet rs = null;

        try {
            rs = stmt.executeQuery();
            sqlconn.commit();

            JRResultSetDataSource jr = new JRResultSetDataSource(rs);
            Map parametros = new HashMap();

            JasperPrint impressao = JasperFillManager.fillReport(path, parametros, jr);
            JasperViewer viewer = new JasperViewer(impressao, false);
            viewer.setAlwaysOnTop(true);
            viewer.setExtendedState(JFrame.MAXIMIZED_BOTH);
            return viewer;

        } catch (SQLException ex) {
            sqlconn.rollback();
            ex.printStackTrace();
            return null;
        } catch (JRException ex) {
            sqlconn.rollback();
            ex.printStackTrace();
            return null;
        }
    }
}

Ela retorna um JasperViewer (que eh um JFRame).

ManoJava

Boa tarde!

Experimenta inicializar seu HashMap

private HashMap<String, Object> parametros = new HashMap<String, Object>();

Att.

Radams_Venceslau

Olá emmanuelrock e ManoJava primeiramente quero agradecer a atenção, segundo
no meu caso emmanuelrock não teria que cria a conexao e passa-lá para o metodo o .fillReport receber um DataSource, mais valew pela ajuda irei utilizar quando for
trazer os dados do banco.
E ManoJava fiz a alteção mais ainda aparece a msg “O Documento não contém folhar”… ! :frowning:

minha classe ficou assim:

public class GeraReport implements Report{

    public void getRelatoryContrato() {

        HashMap<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("nome", "Radams");
        

        String path = "D:\\NetBeansProjects\\GerandoRelatorio\\build\\classes\\report\\Relatorio.jasper";
        System.out.println(path);
        
        try {
            JasperPrint jasperPrint = JasperFillManager.fillReport(path,parameters);
            JasperViewer viewer = new JasperViewer(jasperPrint, true);
            viewer.setAlwaysOnTop(true);
            viewer.setExtendedState(JFrame.MAXIMIZED_BOTH);
            viewer.setVisible(true);
        } catch (JRException ex) {
            ex.printStackTrace();
        }
    }
}
ManoJava

Tenta entao setar as propriedades de Avaliação do relatorio, pode ser que de certo!

Att

Radams_Venceslau

Como assim desculpa mais não entendi setar as propriedades de Avaliação?

Criado 8 de dezembro de 2009
Ultima resposta 8 de dez. de 2009
Respostas 5
Participantes 3