Andre Luiz,
 
Essa solu��o de compilar o relat�rio pela aplica��o tem um custo grande de performance, al�m
de gerar a dependencia de ter na m�quina, onde a aplica��o esteja rodando, o JAVAC, ou seja,
ter uma instala��o completa do J2sdk, n�o bastando somente o JRE.
Esta compila��o � muito pesada e desnecess�ria. Basta somente o arquivo ser compilado,
ap�s a cria��o pelo IReport, uma �nica vez.
 
Abra�os,
Gilvan.
----- Original Message -----
Sent: Wednesday, April 27, 2005 5:23 PM
Subject: Re: [JUG-Petro] iReport, como chamar o .jasper ?


Anderson,

Tamb�m passei por diversos problemas ao tentar fazer relatorios da forma como voce gostaria.

Eu lembro que tive que ir baixando diversos arquivos .jar, conforme iam aparecendo os erros.
Eu uso as seguintes bibliotecas:

commons-beanutils.jar;
commons-collections-3.1.jar;
commons-collections-testframework-3.1.jar;
commons-digester.jar;
commons-logging.jar;
itext-1.02b.jar;
jasperreports-0.6.0.jar;
xerces.jar

(Lembrando que os imports do jasper 0.6.0 diferem dos imports da versao 0.5.3 e anteriores.)

A solu��o que adotei foi a seguinte: pego o layout do servidor (.xml), compilo e gero um arquivo jasper compilado na maquina dos usuarios (.jasper). Depois, pego esse arquivo, gero um pdf e o executo na maquina do usuario, considerando o ambiente windows.

Ei-la:

public void trataImprimeUsuario()  {
   
//caminho fisico dos arquivos compilados (.jasper)        
    String filepath = "C:\\scal\\relatorios\\";
   
    String xmlname = "RelScal_CadastrarUsuario.xml";
    String jaspername = "RelScal_CadastrarUsuario.jasper";
    String pdfname = "RelScal_CadastrarUsuario.pdf";
   
    String xmlfilename = filepath + xmlname;
    String jasperfilename = filepath+jaspername;
    String pdffilename = filepath + pdfname;
   
    File xmlReportFile = new File(xmlfilename);  
    File jasperReportFile = new File(jasperfilename);  
    File pdfReportFile = new File(pdffilename);
   
    usuario = new Usuario();
    //* Seta os atributos do objeto criado
    setaAtributos();
       
    dbUsuario = new DBUsuario();
   
    AcessoBancoTabAux acessoBanco = new AcessoBancoTabAux();
       
    campos = dbUsuario.buscaID(usuario);
     
    Map parameters = new HashMap();
    //atribui o parametro a ser passado, em substitui��o a variavel $P{PARAMETRO} criada no iReport
    parameters.put("IDUSUARIO",new Integer(campos.get(0).toString()));
       
    try {
       
        if (!(xmlReportFile.exists())) {
            mensagem.exibirMsgErro(telaAnt, "\nO arquivo RelScal_CadastrarUsuario.xml n�o foi encontrado no diret�rio\n"+filepath);
        } else {
            JasperDesign jasperDesign = JasperManager.loadXmlDesign(xmlfilename);
            JasperManager.compileReportToFile(jasperDesign, jasperfilename);
           
            if (!(acessoBanco.conecta())) {
                mensagem.exibirMsgErro(telaAnt, "\nN�o foi poss�vel estabelecer uma conex�o com o banco de dados.");
            } else {
                if (!(jasperReportFile.exists())) {
                    mensagem.exibirMsgErro(telaAnt, "\nO arquivo RelScal_CadastrarUsuario.jasper n�o foi gerado ou n�o existe no diret�rio\n"+filepath);
                } else {
                    JasperPrint jasperPrint = JasperManager.fillReport(jasperfilename, parameters, acessoBanco.con);
                    JasperExportManager.exportReportToPdfFile(jasperPrint,pdffilename);
                }
            }    
            if (!(pdfReportFile.exists())) {
                mensagem.exibirMsgErro(telaAnt, "\nO arquivo RelScal_CadastrarUsuario.pdf n�o existe no diret�rio\n"+filepath);
            } else {
                 Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler \""+pdffilename+"\"");    
            }
        }    
        }catch (Exception e) {
            e.printStackTrace();
        }
    }



Atenciosamente,
                   ||_ _||                                      
                  (  @ @  )
+----------------oOOo-(_)-oOOo-+
| Andre Luiz Monteiro da Costa |  
| Analista de Sistemas-CGM/CIN |
|  [EMAIL PROTECTED] |
+-------------------------Oooo-+
                  oooO   (   )
                 (   )    ) /
                  \ (    (_/
                   \_)





"Anderson Luis Vaz" <[EMAIL PROTECTED]>
Enviado Por: [email protected]

27/04/2005 15:57

Favor responder a jug-petropolis

       

        Para:        <[email protected]>
        cc:        
        Assunto:        Re: [JUG-Petro] iReport, como chamar o .jasper ?





Ol� Gilvan e demais amigos da lista, eu tentei  criar uma classe a partir de um exemplo que o Gilvan publicou mas est� dando o  erro : "error loading object from InputStream".
 
A parte da classe que executa est� abaixo, se  alguem puder me ajudar eu agrade�o. O arquivo Relatorios_Turmas.jasper fica na  mesma pasta do programa e consigo abrir o relatorio de dentro do iReport. Ser�  que fiz alguma coisa errada Gilvan?
 
Grato,
Anderson. Londrina PR
 
.//outros imports
.
.
import java.util.HashMap;
import  net.sf.jasperreports.engine.JasperPrint;
import  net.sf.jasperreports.engine.JasperManager;
import  net.sf.jasperreports.view.JasperViewer;
import  net.sf.jasperreports.engine.JasperReport;
import java.net.URL;
 
 
public class RelatTurmas extends  JFrame//JInternalFrame
{
   //outras vari�veis
   .
   .
   private Connection con;
   private String  url="", usuario="", senha="";
 
     //construtor
   .
   .
   .
  
   //m�todo que executa o  relat�rio
   public void ok()
    {
      try
       
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         con=DriverManager.getConnection(url,usuario,senha);
         Statement  st=con.createStatement();
         ResultSet rs=st.executeQuery("SELECT * FROM TURMA");
     
        String  reportFile="Relatorio_Turmas.jasper";
         HashMap parametros=new HashMap();
         URL  urlFile=getClass().getClassLoader().getResource(reportFile);
     
         if(urlFile==null)
         
             throw  new Exception("Arquivo "+reportFile+" n�o  localizado");
         
   
         JasperReport  report=JasperManager.loadReport(urlFile.openStream());
         JasperPrint  impressao=JasperManager.fillReport(report,parametros,con);
         JasperViewer viewer=new  JasperViewer(impressao,false);
         viewer.setTitle("Relat�rio de  Turmas");
         viewer.setBounds(0,0,400,300);
         viewer.show();
        
         st.close();
        con.close();
      }
     catch(Exception  e)
     {
         System.out.println(e);
      
 }

----- Original Message -----
From:  Gilvan Souza
To: [EMAIL PROTECTED]  
Sent: Monday, April 25, 2005 3:12  PM
Subject: Re: [JUG-Petro] iReport, como  chamar o .jasper ?

Um exemplo de c�digo que eu uso.
...
...
String reportFile = "relatorio.jasper";
Map parametros = new  HashMap();
JRDataSource dataSource = new MyDatasource();
 
URL urlFile = getClass().getClassLoader().getResource(reportFile);
if  (urlFile == null) {
 throw new Exception("Relat�rio de nome " +  reportFile + " n�o foi localizado");
}
JasperReport report =  JasperManager.loadReport(urlFile.openStream());
JasperPrint impressao =  JasperManager.fillReport(report, parametrosRelatorio,  dataSource);
JasperViewer viewer = new JasperViewer(impressao,  false);
viewer.setTitle("Relat�rio...");
viewer.setBounds(0, 0,   400, 300);
viewer.show();
...
...
 
 
Abra�os,
Gilvan.

Anderson Luis Vaz <[EMAIL PROTECTED]>  wrote:
Caros amigos, se alguem da lista puder me  ajudar eu agrade�o antecipadamente. Eu estou fazendo um projeto para a  faculdade em java com : iReport, JCreator e banco de dados Access, eu fiz um  relat�rio com o iReport/Jasper e consigo chama-lo de dentro do iReport,  mas quando tento chama-lo atrav�s de uma classe da "erro na carga do  arquivo jasper". 
 
Anderson Vaz, de Londrina PR



Yahoo!  Acesso Gr�tis: Internet r�pida e gr�tis. Instale o discador agora!  



Yahoo! Groups Links


Yahoo! Groups Links

Atrašyti