Chamar o relatório utilizando o ireport e netbeans 6.8 pelo evento do botão

6 respostas
pacscam

Olá pessoal… Sou novo em fases de relatório e preciso de uma ajudinha de voces se for possível
já dei uma olhada boa nos tópicos por aqui e não consegui nada ainda rs.
é o seguinte eu fiz um relatório e este terá que preencher uma ficha que já esta pronta
irei apenas preencher os campos dela por fim ja enquadrei todos fiz o testes ela ja esta funcionando
porem preciso imprimir nesta ficha apenas o registro que será selecionado na jTable
o relatório já esta funcionando mas se existir mais de um registro ele ira imprimar também
o que eu queria era passar por parâmetro o id da ficha para que ela imprima somente o registro selecionado
em fim como eu chamo meu relatório RelAso.jasper que esta no pacote relatorio através do evento do botão passando um valor por parâmetro?
Obs: no próprio relatório eu já construi o select atravéz do query design como vou mandar um parâmetro para ele ?
como chamar o relatório…
já tentei os outros tópicos, mas me parece que tem que ser copiado algo para a pasta do netbeans
pois alguns dos trechos dos codigos o netbeans nao reconhece até os imports me ajudem please help me! :lol: obrigado desde já.

6 Respostas

S

Olá amigo

imprimirOrdemServicoButton.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(ActionEvent e) {
                try {
                    imprimirOrdemServicoButton_action(e);
                } catch (JRException ex) {
                    Logger.getLogger(OrdemServicoDetailFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
           }
      })
.
.
.

  public void imprimirOrdemServicoButton_action(ActionEvent e) throws JRException {
      RelatorioMBean relOrdemservico = new RelatorioMBean(conn);
      relOrdemservico.geraRelatorio("/relatorios/ordemservico.jasper",OrdemServicoDetailFrameController.pk);
  }
package relatorios;


import java.io.File;
 import java.net.URL;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
 import net.sf.jasperreports.engine.*;  
 import net.sf.jasperreports.engine.util.JRLoader;  
 import net.sf.jasperreports.view.*;
import org.postgresql.core.ConnectionFactory;

 
public class RelatorioMBean   { 
	//extends AbstractCrudBean<Relatorio> {
    public Connection conn  = null;

	public RelatorioMBean(Connection conn) throws JRException {
           this.conn = conn;
	}

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

    public void geraRelatorio(String pathReport, String pk) throws JRException {
        //supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
                Map<String, Object> parametros = new HashMap<String, Object>();
	URL reportURL = RelatorioMBean.class.getResource("/relatorios");
	String reportDir = reportURL.getFile();
//	parametros.put("REPORT_PATH", reportDir);
        HashMap map = new HashMap();
        map.put("OS_ID", Integer.parseInt(pk));
	URL relatorioURL = RelatorioMBean.class.getResource(pathReport);
        File file = new File(relatorioURL.getFile());
//        JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(relatorioURL);
        JasperReport jr = (JasperReport) JRLoader.loadObject(relatorioURL);
        JasperPrint jp = JasperFillManager.fillReport(jr, map, conn);
        JasperViewer jv = new JasperViewer(jp, false);
        jv.setVisible(true);

    }


}

espero que isso ajude.

Silvio Guedes

pacscam

Olá amigo obrigado ai pela atenção…
onde eu vou definir o nome do parametro ?
onde o coloco o nome do meu relatorio que seria RelAso.jasper ?
desculpe a ignorância mas esse código ainda é muito confuso para mim rs
se puder me passar algo mais explicativo… abrigado.

S

Olá amigo

1 -onde eu vou definir o nome do parametro ?
Resposta:

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

parametros.put("PARAMETRO", grupo.getParametro());
relOrdemservico.geraRelatorio("/relatorios/ordemservico.jasper", parametros);  ---> Aqui vc passa o nome do relatório e parametro(s).
public void geraRelatorio(String pathReport, Map<String, Object> parametros) throws JRException {
        //supondo que o teu ficheiro teste.jasper esteja dentro da tua aplicação
                Map<String, Object> parametros = new HashMap<String, Object>();
	URL reportURL = RelatorioMBean.class.getResource("/relatorios");
	String reportDir = reportURL.getFile();
       parametros = getParameter(parametros);
	URL relatorioURL = RelatorioMBean.class.getResource(pathReport);
        File file = new File(relatorioURL.getFile());
        JasperReport jr = (JasperReport) JRLoader.loadObject(relatorioURL);
        JasperPrint jp = JasperFillManager.fillReport(jr, parametros, conn);
        JasperViewer jv = new JasperViewer(jp, false);
        jv.setVisible(true);

    }

Silvio Guedes

pacscam

E ai Silvio obrigado ai pela ajuda nao consegui ainda rs ta dando uns erros entao
resolvi ir por partes…
primeiro vou tentar apenas chamar o relatorio para depois passar parametros
me corrige ai…
meu metodo chamado pelo botão

public void printe() throws JRException {

        JasperReport jasper = (JasperReport) JRLoader.loadObject("C:/Users/Paulo Camargo/Documents/NetBeansProjects/sisaso/src/relatorio/RelAso.jasper");

        JasperPrint jasperPrint = JasperFillManager.fillReport(jasper, null, conexao);

        //abre preview
        JasperViewer.viewReport(jasperPrint);
    }

e esse é o erro que esta dando…

Exception in thread AWT-EventQueue-0 java.lang.NoClassDefFoundError: org/springframework/core/io/Resource

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:247)

at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:161)

at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:119)

at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:57)

será que nao consigo nem chamar meu relatorio rs
t+ e obrigado pela atenção :slight_smile:

S

Olá amigo

vc está usando swing ou web neste desenvolvimento?

Silvio Guedes

pacscam

Estou usando o Swing.
estou achando meio estranho não ter dado certo ainda
veja bem instalei o plugin mas só fui utilizar ele bem depois
quando comecei com os relatórios os importes não funcionavam
então fui em adicionar a biblioteca de cara la estava o ireport em formato .zip
e também adicionei um jasper que estava por lá a fim de retirar os erros de importes
esse jasper virou uma lista um pouco grande na minha biblioteca porem .jar e os importes funcionaram
é assim mesmo ?
abração obrigado.

Criado 29 de setembro de 2010
Ultima resposta 30 de set. de 2010
Respostas 6
Participantes 2