Dúvida com JasperReports/IReports!

7 respostas
J

Estou com um problema. Quando executo o relatório no Ireport aparece todos os dados. Quando quando coloco o .jasper na aplicação, ele abre, porém aparece apenas o pdf em branco, sem dado algum.

Alguém sabe o que pode ser?

Utilizo o JasperReport/IReport 4.1.3.

7 Respostas

leoramos

http://guj.com.br/java/256843-erro-ireport–netbeans—relatorio-em-branco

J

leoramos, poderia me ajudar no fato de que no IReport ao ir na opção “Preview” eu visualizo os dados no banco. Porém quando coloco o arquivo .jasper na aplicação, não aparece nenhum dados, apenas o nome de cada coluna que consta no relatório.

leoramos

Tem cara de dataSource vazio. Não dá erro nenhum no teu console?

J

AVISO: The supplied java.sql.Connection object is null.

Apenas esse.

J

leoramos o que seria esse DataSource, é necessário ter ele?

leoramos

Sim, o dataSource é sempre necessário. O dataSource é a fonte de dados do teu relatório. Precisas ler a documentação do Jasper pra ter a ideia MESMO do que é isso.
E teu erro já entrega: tua conexão tá nula. Provavelmente senha errada, algo assim. Mas tu tá sem uma conexão válida com o banco.
Abraço!

J

Eu consegui resolver da seguinte forma

Quando crio um dataSource e chamo ele, não aceita. Quando crio a conexão na própria classe ele aceita.

Veja como era e como ficou.

Como era…

java.sql.Connection conexao = null;
		try{
			Context initContext = new InitialContext();
			Context envContext = (Context) initContext.lookup("java:/comp/env/");
			javax.sql.DataSource ds = (javax.sql.DataSource) envContext.lookup("jdbc/IntrasurDB");
			conexao = (java.sql.Connection) ds.getConnection();
		}
		catch(NamingException e){
			e.getMessage();
		}
		catch(SQLException e){
			e.getMessage();
		}
		return  conexao;

Meu DataSource, conforme mostra num livro que estou seguindo. Também declarei no web.xml, mas não funciona.

<?xml version="1.0" encoding="UTF-8"?>

<Context reloadable="true">
	<Resource name="jdbc/IntrasurDB" 
		auth="Container"
		type="javax.sql.DataSource"
		maxActive="100"
		maxIdle="30"
		maxWait="10000"
		username="root"
		password="15071991"
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/intrasur?autoReconnect=true" />


</Context>

Maneira que funcionou

try{
			Class.forName("com.mysql.jdbc.Driver");
			String driver = "jdbc:mysql://localhost:3306/intrasur";
			Connection con = DriverManager.getConnection(driver, "root", "senha");
			System.out.println(con);
			return con;
		}
		catch(Exception e){
			e.getMessage();
	}
		return null;
Criado 3 de novembro de 2011
Ultima resposta 3 de nov. de 2011
Respostas 7
Participantes 2