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
- To visit your group on the web, go to:
- http://groups.yahoo.com/group/jug-petropolis/
- To unsubscribe from this group, send an email to:
- [EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
Yahoo! Groups Links
- To visit your group on the web, go to:
http://groups.yahoo.com/group/jug-petropolis/
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
