Como chamar o Relatório do iReport num Frame no NetBeans

Boa tar de amigos,

Criei um relatório no iReport e agora preciso que quando o usuário clique no gerar relatório seja apresentado o relatório do iReport(doc, ou xls, ou pdf ou etc…), alguém tem alguma idéia que eu possa usar?

Grande Abç

Logan

Boas loganwlogan.

Como não deste mais pormenores vou supor que o teu relatorio é um simples relatório, sem ligação a bases de dados.

Então, no teu frame, chamas uma classe, por exemplo, que irá tratar do relatório.

//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação URL arquivo = getClass().getResource("teste.jasper"); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo); //aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,null); //isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar JasperViewer jrviewer = new JasperViewer(jasperPrint, false); jrviewer.setVisible(true);

Bem, não sei se era isto, senão manda mais pormenores.
Boa sorte ai :slight_smile:

Valeu Pela ajuda, funcionou direitinho!!!

[]´s

Logan

tentei fazer como o exemplo acima porem deu erro na 5º linha… “reference to fillreport is ambiguous…”

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package relatorio.status;

import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.jasperreports.engine.;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.
;

/**
*

  • @author Administrador
    */
    public class StatusCliente {

    private static Connection getConnection() throws
    ClassNotFoundException, SQLException {
    String driver = “com.mysql.jdbc.Driver”;
    String url = “jdbc:mysql://localhost:3306/laboratorio”;
    String user = “root”;
    String password = “root”;

     Class.forName(driver);
     Connection con = DriverManager.getConnection(url, user, password);
     return con;
    

    }

    public static void main(String[] args) throws JRException, Exception {
    new StatusCliente().geraRelatorio();
    }

    private void geraRelatorio() throws JRException {
    //supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
    URL arquivo = getClass().getResource(“C:\Documents and Settings\Administrador\Meus documentos\projetos\distribuidora\src\relatorio\status\StatusCliente.jasper”);
    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
    //aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, null);
    //isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
    JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
    jrviewer.setVisible(true);
    }
    }
    [/code]

[quote=maxwellmargotti]tentei fazer como o exemplo acima porem deu erro na 5º linha… “reference to fillreport is ambiguous…”

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package relatorio.status;

import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.jasperreports.engine.;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.
;

/**
*

  • @author Administrador
    */
    public class StatusCliente {

    private static Connection getConnection() throws
    ClassNotFoundException, SQLException {
    String driver = “com.mysql.jdbc.Driver”;
    String url = “jdbc:mysql://localhost:3306/laboratorio”;
    String user = “root”;
    String password = “root”;

     Class.forName(driver);
     Connection con = DriverManager.getConnection(url, user, password);
     return con;
    

    }

    public static void main(String[] args) throws JRException, Exception {
    new StatusCliente().geraRelatorio();
    }

    private void geraRelatorio() throws JRException {
    //supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
    URL arquivo = getClass().getResource(“C:\Documents and Settings\Administrador\Meus documentos\projetos\distribuidora\src\relatorio\status\StatusCliente.jasper”);
    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
    //aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, null);
    //isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
    JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
    jrviewer.setVisible(true);
    }
    }
    [/code][/quote]

Kra, passei pelo mesmo problema, mas consegui solucionar.
É o seguinte:
Existem vários métodos fillReport() e como seus parâmetros são objetos, se vc passar null o java não vai conseguir identificar a qual dos métodos vc está se referindo.
Então basta instanciar um dos objetos e passá-lo, mesmo q não vá ser usado, por exemplo.

        URL arquivo = getClass().getResource("..\\RelFormulas.jasper");

        HashMap map = new HashMap();
        try {
            JasperReport jr = (JasperReport) JRLoader.loadObject(arquivo);
            JasperPrint jp = JasperFillManager.fillReport(jr, map,ConnectionFactory.conn);
            JasperViewer jv = new JasperViewer(jp, false);

            jv.setVisible(true);

Nesse caso eu não uso o ojeto map, mas passo por parâmetro simplesmente para identificar o método fillReport() correto.
Espero ter ajudado!

Abraço.

Bom dia estou tendo problemas com os
import net.sf.jasperreports.engine.;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.
;

não achei esses pacotes no ireport

Olá amigo

adicione o jar que está nesta pasta:

jasperreports-3.7.2.jar

iReport-3.7.2/ireport/modules/ext

Dependendo da versão que esteja utilizando.

Silvio Guedes

Muito obrigado Silvio agora funiconou certinho

Boa Noite.
Coloquei esse Codigo e está dando o seguinte erro:

"reference to fillReport is Ambiguou, both method fillReport(net.sf.jasperreport.engine.JasperReport.java.util.Map.java.sql.Connection) in net.sf.jasperreports.engine.JasperFillManager and method fillReport(net.sf.jasperreport.engine.JasperReport.java.util.Map,net.sf.jasperreport.engineJRDataSource) in net.sf.jasperreport.engine.JasperFillManager match

//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
URL arquivo = getClass().getResource(“C:\Documents and Settings\Administrador\Meus documentos\projetos\distribuidora\src\relatorio\status\StatusCliente.jasper”);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
//aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, null);
//isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);

ERRO - O Ant está mal-configurado e não pode ser executado.
java.lang.IllegalStateException: Wrong class loader is finding Ant: sun.misc.Launcher$ExtClassLoader@757aef
at org.apache.tools.ant.module.bridge.AntBridge.createAntInstance(AntBridge.java:291)
at org.apache.tools.ant.module.bridge.AntBridge.getAntInstance(AntBridge.java:267)
at org.apache.tools.ant.module.bridge.AntBridge.getInterface(AntBridge.java:256)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:497)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)

alguem sabe dizer ao que se refere o codigo é esse:

package relatorio;

import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import utilitarios.conexao;

public class relat {

conexao con = new conexao();

public relat() {
try
{
con.conecta();
con.executeSQL(“SELECT * from cidade”);
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
JasperPrint jasperPrint = JasperFillManager.fillReport(
“relatorios/report1.jasper”, new HashMap(), jrRS);
JasperViewer.viewReport(jasperPrint);
} catch (Exception erro){
JOptionPane.showMessageDialog(null,“deu erro =”+erro);
}
}

public static void main (String args[])
{
new relat();
}
}

estou perdida se alguem puder ajudar

Olá

use as tag’s para formatar seu código fonte:

package relatorio; 

import java.util.HashMap; 
import javax.swing.JOptionPane; 
import net.sf.jasperreports.engine.JRResultSetDataSource; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.JasperPrint; 
import net.sf.jasperreports.view.JasperViewer; 
import utilitarios.conexao; 



public class relat { 


conexao con = new conexao(); 


public relat() { 
try 
{ 
con.conecta(); 
con.executeSQL("SELECT * from cidade"); 
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset); 
JasperPrint jasperPrint = JasperFillManager.fillReport( 
"relatorios/report1.jasper", new HashMap(), jrRS); 
JasperViewer.viewReport(jasperPrint); 
} catch (Exception erro){ 
JOptionPane.showMessageDialog(null,"deu erro ="+erro); 
} 
} 

public static void main (String args[]) 
{ 
new relat(); 
} 
} 

Silvio Guedes

Ora viva…

Alquem poderia postar o ficheiro utilitario.conexao ???

Tenho ‘partido muita pedra’ para tentar efectuar o preview de um report.
Penso que só me falta este ficheiro.

Brigadão
Peter

alguém sabe me dizer como salvar direto o arquivo em PDF, sem abrir o viewer?

já usei o jasper na web, usando ZK, mas aqui os métodos são diferentes

grato

Respondendo minha própria pergunta, procurei na documentação do ireport e achei a solução pra mim:

quero salvar direto o arquivo, pois vou enviar o pdf direto por email

no meu projeto utilizei as seguintes libs:
commons-collections.jar
commons-digester-1.7.jar
commons-logging.jar
groovy.jar
itext.jar
jasperreports-3.7.4.jar

a propósito, esse tópico ja fez uns aniversários né :lol:

abraço pessoal

[quote=ondreia]Boas loganwlogan.

Como não deste mais pormenores vou supor que o teu relatorio é um simples relatório, sem ligação a bases de dados.

Então, no teu frame, chamas uma classe, por exemplo, que irá tratar do relatório.

//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação URL arquivo = getClass().getResource("teste.jasper"); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo); //aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,null); //isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar JasperViewer jrviewer = new JasperViewer(jasperPrint, false); jrviewer.setVisible(true);

Bem, não sei se era isto, senão manda mais pormenores.
Boa sorte ai :slight_smile:
[/quote]

Muito boa resposta, porém segue um artigo para fazer isso mais orientado a objeto.