Não abre o relatório

12 respostas
G

Tenho um aplicativo, que quando rodo através do NetBeans, ele gera e abre o relatório (iReport) numa boa. Após criar o Jar, quando clico no botão que dispara o evento que gera o relatório, nada acontece, não dá erro, não trava, simplesmente não acontece nada. Eu sei que o evento está ocorrendo, pq se eu pedir para gerar o relatório do dia e não tiver nada cadastrado no BD, ele me informar que não há registros. Por favor, socorro!!!

12 Respostas

S

Provavelmente está dando alguma excessão que não está sendo tratada.

Para ter certeza disso execute seu jar no DOS com o seguinte comando:

java -jar Programa.jar

E então vai mostrar o trace do erro.

Abraços

M

E como é a classe q vc chama para gerar o relatório? Poste o seu código aqui, pois tive um problema parecido e resolvi apenas tratando a excessão, assim pude identificar meu erro.

att.
Mari

G

Realmente, deu o seguinte erro: “java.io.FileNotFoundException: RelLigacoes.jasper”. O que será?

M

ahh! Agora sim.
Esse erro indica que o seu arquivo compilado (.jasper) não foi encontrado para geração do relatório. Vc precisa verificar duas coisas:

  1. Onde está o arquivo.jasper
  2. Como vc está indicando esse caminho na sua classe…

Posta o seu código aqui, assim fica mais fácil para analisarmos :wink:

att.
Mari

G

Segue abaixo o código:

public class Relatorio extends Controle{
    
    /** Creates a new instance of Relatorio */
    public Relatorio() {
    }
     public void geraRelatorioDiario(String data_atual) throws JRException, Exception
    {
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        String minha_data = data_atual;
        Date date = formatter.parse(minha_data);
        java.sql.Date mySqlDate = new java.sql.Date(date.getTime());
        Date data = mySqlDate;         
        conectaBD();
        String query = "select empresa, telefone, solicitadopor, autorizadopor, data, hora from Ligacao where ligacao_realizada = true and data = #" + data + "# order by empresa";
        registro = comando.executeQuery(query);
        if (registro.next())
        {
            registro = comando.executeQuery(query);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(registro);
            Map parameters = new HashMap();
            JasperPrint jrPrint = JasperFillManager.fillReport("RelLigacoes.jasper", parameters, jrRS);            
            JasperViewer viewer = new JasperViewer(jrPrint, false);
            viewer.setVisible(true);
            viewer.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);
        }
        else
        {
            JOptionPane.showMessageDialog(null,"Não existe ligação efetuada no dia de hoje!", "Telefonia - Relatório de Ligações", JOptionPane.INFORMATION_MESSAGE);
        }
        
        desconectaBD();
    }
     
    public void geraRelatorioDiario(String data1, String data2) throws JRException, Exception
    {
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        String minha_data1 = data1;
        String minha_data2 = data2;
        
        Date date = formatter.parse(minha_data1);
        java.sql.Date mySqlDate = new java.sql.Date(date.getTime());
        Date date1 = mySqlDate;         
        
        date = formatter.parse(minha_data2);
        mySqlDate = new java.sql.Date(date.getTime());
        Date date2 = mySqlDate;         
        
        conectaBD();
        String query = "select empresa, telefone, solicitadopor, autorizadopor, data, hora from Ligacao where ligacao_realizada = true and data between #" + date1 + "# and #" + date2 + "# order by empresa";
        registro = comando.executeQuery(query);
        if (registro.next())
        {    
            registro = comando.executeQuery(query);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(registro);
            Map parameters = new HashMap();
            JasperFillManager.fillReportToFile("RelLigacoes.jasper", parameters, jrRS);
            JasperExportManager.exportReportToPdfFile("RelLigacoes.jrprint");
            JasperViewer.viewReport("RelLigacoes.jrprint", false);
        }
        else
        {
            JOptionPane.showMessageDialog(null,"Não existem ligações no período especificado!", "Telefonia - Relatório de Ligações", JOptionPane.INFORMATION_MESSAGE);
        }
        desconectaBD();
    }
}
M

O problema está aqui:

JasperPrint jrPrint = JasperFillManager.fillReport(“RelLigacoes.jasper”, parameters, jrRS);

Além de indicar o nome do arquivo.jasper vc precisa indicar o caminho dele, por exemplo:
JasperPrint jrPrint = JasperFillManager.fillReport("/java/iReport-1.3.1/bin/RelLigacoes.jasper", parameters, jrRS);

tenta aí e me diga se deu certo.

Mari[/quote]

G

Muito obrigado! Tá funcionando que é uma beleza! Com certeza, este fórum é de enorme valia e eficiência.

M

ola, estou com o mesmo problema, mas uso o eclipse …

como voce conseguiu adicionar o seu relatorio ao arquivo .jar ??

ja fiz alguns testes, nao sei mais se eh o caminho ou a criacao do meu jar que esta errado que meu relatorio nao executa, da o mesmo erro : “java.io.filenotexception”

sera que alguem pode me ajudar ??

M

Olá Marcos!

Posta o código da sua classe aqui :smiley:
Eu tb uso o Eclipse, quem sabe posso te ajudar.

att.
Mari

M

eu nao sei aonde estou errando, se eh no codigo ou na hora de criar o meu .jar …

ai vai meu codigo …

package teste;

import java.sql.ResultSet;
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;

public class Relatorio_atualiza {
	
	public Relatorio_atualiza(String nume_cpd) {
		try {
			@SuppressWarnings("unused")
			JasperPrint relat = gera_relatorio(nume_cpd);
			//JasperViewer.viewReport(relat, false);
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null , "Erro ao chamar relatório !\n" + e.getMessage() , "Operador" , JOptionPane.ERROR_MESSAGE);
		}
	}
	
	@SuppressWarnings("unchecked")
	public JasperPrint gera_relatorio(String nume_cpd) {

		JasperPrint rel = null;
		String quadro = null ;
		String inscricao = null ;

		try {
			ResultSet results1 = Conectar.execSQL( " select teste064.descricao, teste080.descricao from teste064, teste080, teste062 where teste062.nuncpd = '"+nume_cpd+"' and teste062.quadro = teste064.codigo and teste062.tipo_inscricao = teste080.situacao ; " );
			if ( results1.next() ) {
				quadro = results1.getString(1);
				inscricao = results1.getString(2);
				quadro = quadro.trim();
				inscricao = inscricao.trim();
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null , "Erro ao gerar relatório !\n" + e.getMessage() , "Operador" , JOptionPane.ERROR_MESSAGE);
		}

		try {
 			ResultSet results = Conectar.execSQL( " select cpf, nome, inscricao, endereco, bairro, cidade, estado, cep, fone, celular, email from teste062 where teste062.nuncpd = '"+nume_cpd+"' ; " ) ;
 			JRResultSetDataSource jrRS = new JRResultSetDataSource( results );
			HashMap map = new HashMap();
			map.put("para1",quadro);
			map.put("para2",inscricao);
			String caminho = "/Atualiza.jasper" ;
			rel = JasperFillManager.fillReport( caminho , map, jrRS);
 			JasperViewer viewer = new JasperViewer(rel, false);
 			viewer.setVisible(true);
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null , "Erro ao gerar relatório !\n" + e.getMessage() , "Operador" , JOptionPane.ERROR_MESSAGE);
		}
		return rel;
	}
}

como voce criou o seu .jar ?? pelo eclipse ??
e os relatorios, como voce fez para adicionar ao seu projeto …
porque no meu caso, tenho a workspace “teste” …
dentro dessa pasta criei outra chamada “pacotes”, onde coloco meus relatorios (.jasper), algumas figuras, alem de .jar´s (como driver de conexao com o banco de dados, que funciona, so o relatorio e a figura que nao)

obrigado

M

continuarei respondendo no tópico:
http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=39051

M

ok

mudamos para o outro topico …

Criado 3 de maio de 2007
Ultima resposta 14 de mai. de 2007
Respostas 12
Participantes 4