Problema com geração de relatórios

9 respostas
A

Pessoal, eu to com um problema nesse código:

package dados;

import net.sf.jasperreports.engine.*;
import java.sql.*;
import java.util.*;
import net.sf.jasperreports.view.JasperViewer;

public class RelatorioDespesas {
    private Connection conexao;

    public RelatorioDespesas() throws SQLException, ClassNotFoundException{
        this.conexao = ConectaBD.getConectacao();
        this.conexao.createStatement();
    }

    public void geraRelatorio( ) throws JRException, Exception
        {

        this.conexao = ConectaBD.getConectacao();
        this.conexao.createStatement();

        PreparedStatement st = conexao.prepareStatement("SELECT * FROM despesa");
        ResultSet rs = st.executeQuery();

        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

        Map parameters = new HashMap();

        JasperFillManager.fillReportToFile("RELATORIOS/despesasrelatadas.jasper", parameters, jrRS );

        JasperExportManager.exportReportToHtmlFile("RELATORIOS/despesasrelatadas.jrprint");

        JasperViewer.viewReport("RELATORIOS/despesasrelatadas.html",false);
    }

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

Os diretórios estão certos de certeza absotula.
Eu queria que gerasse em pdf, mas n gera! so consegui gerar em html, mas mesmo assim não abre. Os erros apontados são:

run:

Exception in thread main net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: RELATORIOS\despesasrelatadas.jasper

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)

at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:443)

at dados.RelatorioDespesas.geraRelatorio(RelatorioDespesas.java:45)

at dados.RelatorioDespesas.main(RelatorioDespesas.java:90)

Caused by: java.io.FileNotFoundException: RELATORIOS\despesasrelatadas.jasper

 4 more

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

Fico muito grato!

9 Respostas

R

A exceção ocorrida é FileNotFoundException, o que indica que seu projeto está sendo executado a partir de um caminho onde NÃO consegue localizar o arquivo “RELATORIOS\despesasrelatadas.jasper”. Experimente passar o caminho completo para este arquivo e acho que vai funcionar.

A

roger, coloquei o caminho completo certinho de onde estão os arquivos, mas deu a mesma bronca ! n entendo como n ta conseguindo achar =/

eu instalei o plugin do ireport no netbeans fiz o design todo la do relatorio tudo certinho e tal, e baixei os jars do jasper e nada…

A

n consigo entender o motivo desse erro ! sera que pode ser algum problema com os jars que eu baixei ?
alguem ja passou por algo parecido ?

R

A exceção emitida é a mesma? Por favor envie novamente seu código-fonte atualizado e a listagem da exceção para analisarmos.

A

roger_rf, consegui abrir o relatório em formato .jasper e nao em pdf, ou no máximo em html (gostaria mto que fosse em pdf ou pelo menos html).
ele abre o relatório no jasper view tudo ok.
quando eu tentava gerar o html, ele gerava la no diretorio, em pdf n gerava e dava erro. Mesmo gerando em html não consegue abrir ta ligado.
vou te mostrar o codigo

package dados;

import net.sf.jasperreports.engine.*;
import java.sql.*;
import java.util.*;
import javax.swing.JFrame;
import net.sf.jasperreports.view.JasperViewer;

public class RelatorioDespesas {
    private Connection conexao;

    public RelatorioDespesas() throws SQLException, ClassNotFoundException{
        this.conexao = ConectaBD.getConectacao();
        this.conexao.createStatement();
    }

    public void geraRelatorio() throws /*JRException, */Exception
        {

        this.conexao = ConectaBD.getConectacao();
        this.conexao.createStatement();

        PreparedStatement st = conexao.prepareStatement("SELECT * FROM despesa");
        ResultSet rs = st.executeQuery();

        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

        Map parameters = new HashMap();
        
        JasperFillManager.fillReportToFile("C:/reports/despesasrelatadas.jasper", parameters, jrRS );

        JasperViewer.viewReport("C:/reports/despesasrelatadas.jrprint",false,false);
    }

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

olha, caso eu n consiga exportar e abrir em pdf ou html, como faço pra dentro da minha camada de gui, em um clique de botão eu
abrir o relatorio em .jasper ?

valeu mesmo cara!

R

Para que o Jasper possa gerar arquivos PDF, é preciso que você inclua na sua aplicação o arquivo JAR da biblioteca iText. Você incluiu este arquivo?

A

não sabia! vou baixar o .jar
acho q com isso vai conseguir exportar porém o jasperview talvez n consiga abrir!

caso eu consigo como faço pra chamar no meu pacote gui no clique de um botão ?

valeu cara!

R

O JasperViewer não é capaz de abrir arquivos PDF, você provavelmente terá de delegar essa tarefa ao sistema operacional:

http://java.sun.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)

if (Desktop.isDesktopSupported()) {
  Desktop.getDesktop().open(new File("caminho do arquivo PDF"));
}

Para disparar o relatório na sua GUI, creio que o melhor é criar um JFrame, incluir um JButton no JFrame e, no evento de clique do JButton (pode ser registrado via addActionListener()), dispare o método geraRelatorio() da classe RelatorioDespesas.

A

roger_rf:
O JasperViewer não é capaz de abrir arquivos PDF, você provavelmente terá de delegar essa tarefa ao sistema operacional:

http://java.sun.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)

if (Desktop.isDesktopSupported()) {
  Desktop.getDesktop().open(new File("caminho do arquivo PDF"));
}

Para disparar o relatório na sua GUI, creio que o melhor é criar um JFrame, incluir um JButton no JFrame e, no evento de clique do JButton (pode ser registrado via addActionListener()), dispare o método geraRelatorio() da classe RelatorioDespesas.

Roger, valeu aí pela ajuda, agora vai dar tudo certo !

obrigado!

Criado 27 de maio de 2010
Ultima resposta 27 de mai. de 2010
Respostas 9
Participantes 2