Relatório com IReport [RESOLVIDO]

Ter eu tenho, mas nao tenho sua base de dados.

E também estou em serviço né hehe…

Mas se quiser pode mandar, posso dar uma olhada rápida.

E-mail: thekill87@gmail.com

Att. Jonas

hehehe valew

Eu vou passar a base de dados tbm caso vc tenha o mysql instalado ^^

Muito obrigado pela ajuda

Nao tenho, trabalho com Firebird

Conseguiu resolver o problema caro amigo?

Se sim, seria legal renomear o topico para Resolvido …

Já abri umas 4x esse topico rsrsrs

consegui nada TheKill

Eu mandei um e-mail pra vc, vou digitar o que eu mandei pra vc aki

Tipo eu peguei um tutorial e fiz isso

[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;

public class RelatorioTeste {
private static final String url = “jdbc:mysql://localhost/banco_eclusas”;
private static final String driver = “com.mysql.jdbc.Driver”;
private static final String login = “root”;
private static final String pwd = “root”;

public RelatorioTeste() {
}

public void gerar( String jasperFile ) throws JRException , SQLException, ClassNotFoundException {

	Class.forName( driver );
	Connection con = DriverManager.getConnection( url , login , pwd );
	Statement stm = con.createStatement();
	String query = "select nomeEclusa from eclusas";
	ResultSet rs = stm.executeQuery( query );

	//implementação da interface JRDataSource para DataSource ResultSet
	JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );

	//executa o relatório
	Map parametros = new HashMap();
	//parametros.put("nota", new Double(10));

	/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint    */
	JasperFillManager.fillReportToFile( jasperFile, parametros, jrRS );
	
	/* Exporta para o formato PDF */
	JasperExportManager.exportReportToPdfFile( "classic.jrprint" );
}

public static void main(String[] args) {
	try {
		new RelatorioTeste().gerar( "classic.jasper" );
	} catch (Exception e) {
		e.printStackTrace();
	}
}

}[/code]

compilei e deu o seguinte erro

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at net.sf.jasperreports.engine.fill.JRBaseFiller.<clinit>(JRBaseFiller.java:96) at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:147) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:83) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:492) at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:448) at Teste.RelatorioTeste.gerar(RelatorioTeste.java:42) at Teste.RelatorioTeste.main(RelatorioTeste.java:50) Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 8 more

o erro acontece quando chega nessa linha

[code]

/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
JasperFillManager.fillReportToFile( jasperFile, parametros, jrRS );[/code]

eu não sei oq está acontecendo

Pra q serve o HashMap q eu passo como parâmetro?

Exato.

HashMap serve para quando vc estiver usando parametros no seu relatório.

exemplo: $P{cor}

no java:

String cor=“red”;
HashMap h = new HashMap();
h.put(cor);

Cerfique-se que esteja utilizando o library correto do iReport. no meu eu utilizo o jasperreports-3.5.3.jar
e Tambem necessita de outros Jars.

Vou colocar os nomes e você adiciona no projeto:
commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-digester-1.7.jar
commons-javaflow-20060411.jar
commons-logging-1.1.jar
jasperreports-3.5.3.jar
iText-2.1.0.jar

Provavel que esteja sem a library commons.logging …

Verifique

Bom nos libraies tem o jasperReport3.0.jar, o mysqlConector.jar e a library do java 1.6

Tem q ter mais algumas?

Sim, veja oque falei anteriormente…

[quote=TheKill]Cerfique-se que esteja utilizando o library correto do iReport. no meu eu utilizo o jasperreports-3.5.3.jar
e Tambem necessita de outros Jars.

Vou colocar os nomes e você adiciona no projeto:
commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-digester-1.7.jar
commons-javaflow-20060411.jar
commons-logging-1.1.jar
jasperreports-3.5.3.jar
iText-2.1.0.jar[/quote]

Onde eu baixo esses jars?

Na pasta de instalação do JasperSoft…
\Ireport\ireport\modules\ext

Tem todos os Jars… Localize os nomes que falei e importe no projeto

AEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

DEU CERTOOO ^^

Ow valew mesmo TheKill, muito obrigado, sou muito grato a vc kra

Precisar de alguma coisa, alguma ajuda é soh pedir

Muito obrigado mesmo, foi soh importar as bibliotecas ^^

Tipo mais agora como q eu faço pra aparece na tela jah, pq ali ele gerou um pdf na pasta do projeto
qual é o comando pra aparecer na tela?

Obrigado

JasperViewer.viewReport(jp, false);

Testa ae!! Foi nada não… Precisar estamos ae

JasperPrint jp = JasperFillManager.fillReport("teste.jasper", parametros, jrRS); JasperViewer.viewReport(jp, false);

Coloquei esse código e aparecer q o documento não contém páginas, oq aconteceu?

[quote=brunorota] JasperPrint jp = JasperFillManager.fillReport("teste.jasper", parametros, jrRS); JasperViewer.viewReport(jp, false);

Coloquei esse código e aparecer q o documento não contém páginas, oq aconteceu?[/quote]

É este é um erro comum… tem que dar uma analisada … Pode ser varias coisas…

Mas eu penso que é na transmissão dos dados para o relatório…

Voce ta passando por HashMap ou SQL ?

Se for HashMap tem que colocar os atributos no relatório do tipo $P{atributo}

E se for SQL no relatorio tem que ser $F{NOME_DO_CAMPO_NA_TABELA}

é por sql

e no relatório já está $F{nome} que é o nome do campo da tabela no banco

o código é esse, o pdf gerou normal

[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class RelatorioTeste {
private static final String url = “jdbc:mysql://127.0.0.1/teste”;
private static final String driver = “com.mysql.jdbc.Driver”;
private static final String login = “root”;
private static final String pwd = “root”;

public RelatorioTeste() {
}

public void gerar( String jasperFile ) throws JRException , SQLException, ClassNotFoundException {

	Class.forName( driver );
	Connection con = DriverManager.getConnection( url , login , pwd );
	Statement stm = con.createStatement();
	String query = "select * from turma";
	ResultSet rs = stm.executeQuery( query );

	//implementação da interface JRDataSource para DataSource ResultSet
	JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );

	//executa o relatório
	Map parametros = new HashMap();
	//parametros.put("nota", new Double(10));

	/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint    */
	JasperFillManager.fillReportToFile( jasperFile, parametros, jrRS );

	/* Exporta para o formato PDF */
	JasperExportManager.exportReportToPdfFile( "teste.jrprint" );
	
	JasperPrint jp = JasperFillManager.fillReport("teste.jasper", parametros, jrRS);    
    JasperViewer.viewReport(jp, false);  
}

public static void main(String[] args) {
	try {
		new RelatorioTeste().gerar( "teste.jasper" );
	} catch (Exception e) {
		e.printStackTrace();
	}
}

}[/code]

att

Uma pergunta,

Você quer que gere automaticamente o PDF no HD???

Ou ele salva o PDF se ele quiser?!

Se for pra salvar Opcionalmente retire a linha

//Exporta para o formato PDF */  
JasperExportManager.exportReportToPdfFile( "teste.jrprint" );  

Se a parte de código que comentei anteriormente nao funcionou…

Faça o seguinte teste:


/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint    */
//JasperFillManager.fillReport(jasperFile, parametros, jrRS);   

/* Exporta para o formato PDF */  
//JasperExportManager.exportReportToPdfFile( "teste.jrprint" );  

JasperPrint jp = JasperFillManager.fillReport(jasperFile, parametros, jrRS);      
JasperViewer.viewReport(jp, false);

Opa
Testei aki deu certinho TheKill

Vc me ajudou bastante mesmo, muito obrigado, agora que eu tenho a formulá vou bolar o relatório que eu preciso fazer ^^

Qualquer problema que eu não conseguir resolver de jeito nenhum eu posto outro tópico

Muito obrigado mesmo TheKill ^^

Atenciosamente

Bruno Rota Sargi