JasperReport (DataSource)

Olá para todos…
Sou iniciante em JasperReport, estou usando o front-end iReport. Desenvolvi os XML´s no iReport sem nenhuma dúvida, usei com conexão e sem conexão. Daí vem o problema a conexão com o banco aqui na empresa não vai ficar no iReport vai se construir uma Classe ue implementara o JRDataSource que vai funcionar como Interligação do .XML com o banco!!! blz??

só que a minha dúvida está em como usar este dataSource… como ele interagi com o XML? através dos fields? parametros? e a principal dúvida é como implementar os dois metodos da interace o Boolean Next() e o Object getField… alguem poderia me dar um exemplo??
qualquer coisa pode ser pelo email tb

mut4nte_pe@hotmail.com

obrigado desde já…
=)

[quote=“Gregoryan”]Olá para todos…
Sou iniciante em JasperReport, estou usando o front-end iReport. Desenvolvi os XML´s no iReport sem nenhuma dúvida, usei com conexão e sem conexão. Daí vem o problema a conexão com o banco aqui na empresa não vai ficar no iReport vai se construir uma Classe ue implementara o JRDataSource que vai funcionar como Interligação do .XML com o banco!!! blz??

só que a minha dúvida está em como usar este dataSource… como ele interagi com o XML? através dos fields? parametros? e a principal dúvida é como implementar os dois metodos da interace o Boolean Next() e o Object getField… alguem poderia me dar um exemplo??
qualquer coisa pode ser pelo email tb

mut4nte_pe@hotmail.com

obrigado desde já…
=)[/quote]

Gregoryan, segue abaixo exemplo de uma classe que uso para Fazer conexao com o banco, etc…

import dori.jasper.engine.JasperCompileManager;
import dori.jasper.engine.JasperReport;
import dori.jasper.engine.JRException;
import dori.jasper.engine.JasperExportManager;
import dori.jasper.engine.JasperFillManager;
import dori.jasper.engine.JREmptyDataSource;
import dori.jasper.engine.JasperPrint;
import dori.jasper.view.JasperViewer;

import java.util.HashMap;
import java.util.Map;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**

  • Realiza a leitura de um arquivo XML que representa o design de um

  • relatório e cria um arquivo para jasper
    */
    public class Teste{
    public static void main(String args[]){
    try{
    // compila o arquivo xml para um arquivo jasper
    JasperCompileManager.compileReportToFile(“nomedoarquivo.xml”, “classic.jasper”);
    JasperPrint print = JasperFillManager.fillReport(“classic.jasper”, getParameters(), getConnection());
    // Exporta o arquivo compilado para um arquivo pdf
    JasperExportManager.exportReportToPdfFile(print, “RelatorioProdutosDuto.pdf”);

      }catch(JRException jre){
      	jre.printStackTrace();
      	System.out.println("O Arquivo encontra-se aberto!!!!!!!");
    
      }catch(ClassNotFoundException clazz){
      	System.out.println("Problemas para carregar o driver");
    
      }catch(SQLException sql){
      	System.out.println("Problemas para abrir a conexão");
    
      }
    

    }
    //aqui vc coloca os nomes da colunas de sua tabela
    private static Map getParameters(){
    Map valores = new HashMap();
    valores.put(“xxx” ,null);
    valores.put(“www” ,null);
    valores.put(“zzz” ,null);
    return valores;
    }

    private static Connection getConnection()throws ClassNotFoundException, SQLException{
    final String url = “coloque aqui a sua URL”;
    final String username = “”;
    final String password = “”;
    Class.forName(“oracle.jdbc.driver.OracleDriver”);
    Connection conn = DriverManager.getConnection(url, username, password);
    return conn;
    }
    }

Qlq. duvida estou a disposicao

Abraços

Rocha

Brigadão Rocha…
nesta classe voce está compilando um .xml para um .jasper… blz…
isso eu tou fazendo pelo ireport…
agora o meu problema é de como usar um DataSource para controlar a SQL q passo para o relatório… achei um examplo aqui na empresa…

    try{
	Connection con = dbManager.getConnection();
        File reportFile = new File(application.getRealPath("/reports/pais.jasper"));
        dsTesteJasper source = new dsTesteJasper();
        source.setConnection(con);
	Map parameters = new HashMap();
	parameters.put("ReportTitle", "Relatório de Países");
	parameters.put("BaseDir", reportFile.getParentFile());
				
	byte[] bytes = 
		JasperRunManager.runReportToPdf(
			reportFile.getPath(), 
			parameters, 
			source
			);
	
	response.setContentType("application/pdf");
	response.setContentLength(bytes.length);
	ServletOutputStream ouputStream = response.getOutputStream();
	ouputStream.write(bytes, 0, bytes.length);
	ouputStream.flush();
	ouputStream.close();
        dbManager.closeConnection(con);
   } catch (Exception e){ 
        e.printStackTrace();
   }

o problema eh como eh o corpo da classe dsTesteJasper para que funcione como DataSource?? sei q tem q implementar a interface JRDataSource…

entendesse?

Dá uma lidinha nesse topido aqui.

valeu kra…
descobri como se usa…
se alguem tiver dúvidas … tow ake
falow!

[quote=“Gregoryan”]valeu kra…
descobri como se usa…
se alguem tiver dúvidas … tow ake
falow![/quote]

Eu estou procurando exatamente algo assim, como passar o resultado de uma query já executada para o relatório, sem ter que executar novamente esta query.

Alguem tem algum exemplo de com fazer isso?

Thanks

faloha

Cria um JRDataSource que receba um tablemodel entao, ou algo do tipo. Ai vc guarda teu resultado nele, e quando precisar imprimir eh so passar.

Eu disse um TableModel, pq eu usso ele mto, pois mts resultados eu exibo em uma JTable, dai pra imprimir eh so passar o TableModel dela :smiley:

Flw!!!