Problemas com relatório

7 respostas
T

Ola pessual criei um relatório no irereport e la fica tudo beleza, consigo compilar ele, e visualizar, ai criei ma classe no java para chamar, chama beleza tb, mas os campos não vem preenchidos com o conteudo que tenho o codigo é esse:

package Relatorios;

import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import Utilitarios.conexao;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.*;

public class Relat_Acervo{

    conexao con = new conexao();

    public Relat_Acervo(){

        try
        {
            con.conecta();
            con.executeSQL("select * from Cad_Acervo");
            JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
            JasperPrint jasperPrint = JasperFillManager.fillReport("Relatorios/Relatorio_Acervos.jasper", new HashMap(), jrRS);
            //JasperExportManager.exportReportToPdfFile(jasperPrint, "Relatorios/Relatorio_Usuarios.pdf");
            JasperViewer.viewReport(jasperPrint);
        }
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null, " Erro "+erro);
        }
    }
    public static void main(String args[]) {

                new Relat_Acervo();
            }
}

7 Respostas

castiel

ao invés de passar o jrRS, passe somente a conexão para o banco.

//O getConnection retorna para eu uma conexão pronta para o meu banco;
Connection connection = ConnectionFactory.getConnection();
JasperPrint jasperPrint = JasperFillManager.fillReport("Relatorios/Relatorio_Acervos.jasper", new HashMap(), connection);
T

castiel:
ao invés de passar o jrRS, passe somente a conexão para o banco.

//O getConnection retorna para eu uma conexão pronta para o meu banco; Connection connection = ConnectionFactory.getConnection(); JasperPrint jasperPrint = JasperFillManager.fillReport("Relatorios/Relatorio_Acervos.jasper", new HashMap(), connection);

mas este conection que c usou é de onde, vc tem uma classe conexão???

castiel

Segue meu factory de conexao:

public class ConnectionFactory {

	public static Connection getConnection() throws SQLException {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return DriverManager.getConnection("jdbc:mysql://localhost/minhabase",
				"usuario", "senha");
	}
}

ele retorna um Connection pronto para o seu banco.

dudu_sps

Desculpem ai.. entrar de bicão...
mas to precisando instanciar meu relatorio tbm
e no meu botão dei o seguinte evento

public void actionPerformed(java.awt.event.ActionEvent e) {
					Connection connection;
					try {
						connection = ConnectionFactory.getConnection();
						try {
							JasperPrint jasperPrint = JasperFillManager.fillReport("relatorios/Rel_MoviBanco.jasper", new HashMap(), connection);
							JasperViewer.viewReport(jasperPrint);
						} catch (JRException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
					} catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}   
					  
				}

e da o seguinte erro

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: relatorios\Rel_MoviBanco.jasper
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
	at consultas.ConsultaMoviBanco$18.actionPerformed(ConsultaMoviBanco.java:810)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener$Actions.actionPerformed(Unknown Source)
	at javax.swing.SwingUtilities.notifyAction(Unknown Source)
	at javax.swing.JComponent.processKeyBinding(Unknown Source)
	at javax.swing.KeyboardManager.fireBinding(Unknown Source)
	at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
	at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source)
	at javax.swing.JComponent.processKeyBindings(Unknown Source)
	at javax.swing.JComponent.processKeyEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: relatorios\Rel_MoviBanco.jasper
	... 36 more
castiel

Revise o caminho do relatório que vc passou, ele está errado:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: relatorios\Rel_MoviBanco.jasper

se vc criou um pacote relatorios dentro de src, vc terá que usar outra maneira para mandar a localização do relatório, sugiro que crie uma pasta, para fazer isso.

dudu_sps

desculpe a ignorancia… mas criar uma pasta ond, ou como achar o caminho?

castiel

No meu caso eu fiz no eclipse, então eu criei uma pasta um nivel abaixo do projeto, na raiz do projeto.
MeuProjetoJava
|-src
|-libs
|-reports
Mais ou menos assim.

Criado 3 de dezembro de 2009
Ultima resposta 4 de dez. de 2009
Respostas 7
Participantes 3