Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Jasper Report + iReport + NetBeans 4 (http://www.forosdelweb.com/f45/jasper-report-ireport-netbeans-4-a-280528/)

wifer 29/04/2005 07:10

Cita:

Iniciado por DestruKtor
Wifer, si lees el foro de principio a fin veras que hay hasta un codigo completo de como llamar el reporte mediante un jsp. lee y prueba.

Si DestruKtor, tienes razon, pero veo que tienes en tu package "reportload" un llamado a "c:\\reports\\rep_cli.jasper", el cual es el reporte ejecutable, tambien veo que le envias como parametro una sentencia select parameters.put("sql_query", new String("select * from clientes")); y mi reporte .jasper tiene la sentencia select, el formateo de las columnas y el formateo de la salida que es a excell, ademas yo manejo un pool de conexiones y en tu clase manejas quemada la conexion. lo que quiero es saber como hago un llamado a un report el cual ya tiene todo como los select, los formateos de salida, solo quiero invocarlo.
Mil gracias DestruKtor por tu oportuna respuesta.

ajf 29/04/2005 08:47

Hola gente:
Estoy generando un reporte con Ireports y Jasperreportds para correr en una aplicacion web, genere un bean de reporte y un action para que me lo genere, al correr la aplicacion. el reporte se abre correctamente con JasperViewer, pero al cerrar la ventanao guardar el archivo en algun formato se baja el Tomcat
Tienes idea de por que se produce esto?
Gracias por todo

Kangulo 29/04/2005 09:02

Para wifer
 
Wifer primero que nada definamos el ambiente de desarrollo, en mi caso, estoy usando
  1. Apache Tomcat 5.5.9
  2. MySQL 4.1
  3. Internet Explorer
  4. iReport 0.4.1

En unos de los mensajes anteriores esta como utilizar en vez de la conexion un pool de conexiones, pero por si las dudas aqui te mando el codigo entero de una pagina JSP que hace un llamado a un reporte y lo muestra en el browser, como notarás es con MySQL y en la pagina se aprecia la sustitución de la cadena de conexion por el datasource q implementa el pool de conexiones.

<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>

<%
/*
Connection conexion;
String DRIVER = "org.gjt.mm.mysql.Driver";
String USERNAME = "exo";
String PASSWORD = "exo";
String STRING = "jdbc:mysql://localhost/[MiBaseDatos]";

Class.forName(DRIVER).newInstance();
conexion = DriverManager.getConnection(STRING,USERNAME,PASSWO RD);
*/


Context init = new InitialContext();
Context context = (Context) init.lookup("java:comp/env");
DataSource dataSource =(DataSource)context.lookup("jdbc/[dsMiBaseDatos]");
Connection conexion = dataSource.getConnection();

File reportFile = new File(application.getRealPath("/rpt/Reporte.jasper"));

/* Sin Parametros
Map parameters = new HashMap();
parameters.put("Parametro1", "valor");
*/
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, conexion);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>

Espero te sirva de ayuda.

Saludos...
:adios:

KirsonX 29/04/2005 11:22

Ayuda para ejecutar reporte sin depender del sistema de archivos
 
Tengo la siguiente inquietud, es posible ejecutar un reporte sin que el archivo se encuentre fisicamente en el sistema de archivos. Necesito que el archivo del reporte .jrxml ó .jasper se almacene en la BDD. Luego yo voy a recuperar el documento como objeto y necesito ejecutarlo pero sin copiar el archivo a disco.

No se si he sido claro con lo que debo hacer.. Si alguien tiene alguna idea se lo agradeceria mucho
Saludos
KirsonX

DestruKtor 29/04/2005 14:39

Cita:

Iniciado por KirsonX
Tengo la siguiente inquietud, es posible ejecutar un reporte sin que el archivo se encuentre fisicamente en el sistema de archivos. Necesito que el archivo del reporte .jrxml ó .jasper se almacene en la BDD. Luego yo voy a recuperar el documento como objeto y necesito ejecutarlo pero sin copiar el archivo a disco.

No se si he sido claro con lo que debo hacer.. Si alguien tiene alguna idea se lo agradeceria mucho
Saludos
KirsonX


KirsonX, en la documentacion de jassperreport existen medodos para pasar la ruta del archivo o bien un imputstream:

static byte[] JasperRunManager.runReportToPdf(java.io.InputStrea m inputStream, java.util.Map parameters, JRDataSource jrDataSource)

o

JasperManager.runReportToPdfFile(java.lang.String sourceFileName, java.util.Map parameters, JRDataSource jrDataSource)

tal vez podrias cargar un reporte en una base de datos y luego cargarlo en un inputstream. aún si logras eso el problema es el siguiente. si tu reporte tiene imagenes, jassperreport NO incrusta las imagenes dentro del *.jasper y ademas para accesar a las imagenes utiliza una ruta absoluta y no una direccion relativa del servidor web, asi que la complicacion va por ese lado, creo ademas que no es muy optimo almacenar y consultar binarios sobre bases de dato.

DestruKtor 29/04/2005 14:48

Cita:

Iniciado por wifer
y mi reporte .jasper tiene la sentencia select, el formateo de las columnas y el formateo de la salida que es a excell, ademas yo manejo un pool de conexiones y en tu clase manejas quemada la conexion. lo que quiero es saber como hago un llamado a un report el cual ya tiene todo como los select, los formateos de salida, solo quiero invocarlo.
Mil gracias DestruKtor por tu oportuna respuesta.

wifer, hay una cosa que tienes que tener claro, no existe tal cosa como un ejecutable, es decir el archivo *.jasper. no tiene ni los datos ni menos tienes en el configurado el formato de salida, es decir no es llegar y te ejecuta el reporte en excell. el archivo *.jasper desde fuera le pasas parametros y dependiendo el metodo de exportacion es el archivo final (excell, html,pdf) uno no predefine el formato de salida. tu en el iReport ves que la cosa es como automatica, por que el ireport pasa la misma informacion que tu tienes que pasar en tu jsp por debajo y no te das cuenta, por ejemplo si quieres obtener el resultado como pdf, lo haces asi

Código:

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parametros, conexion);
y si lo quieres obtener en html, asi

Código:

JasperRunManager.runReportToHtmlFile(reportFile.getPath(),HtmlFilesSource + htmlFileName, parametros, conexion);
en excell

Código:

JasperPrint jasperPrint=JasperFillManager.fillReport(reportFile.getPath(), parametros, conexion);
               
                //Nombre archivo resultado.
                String xlsFileName = outFileName + ".xls";
             
               
                //Creacion del XLS
                JRXlsExporter exporter = new JRXlsExporter();
                exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,xlsFilesSource + xlsFileName);
                exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
                exporter.exportReport()

Ve los codigos posteados, y esto con ello tendras todo lo necesario para ejecutar tu reporte.

laraos 01/05/2005 13:06

Por favor ayuda!!
 
alguien ha exportado un pdf con un grafico?..lo que pasa es que me saca este error
net.sf.jasperreports.engine.JRException: No input source supplied to the exporter.
cuando llega a JasperExportManager.exportReportToPdfFile(jprintRe porte, strRetorno);
Que debo hacer?
GRACIAS!!

KirsonX 02/05/2005 09:12

Gracias DestruKtor
 
Ya habia encontrado los métodos que mencionas, no había reparado en lo concerniente a las imágnes; al menos por ahora no necesito que mis reportes usen imágenes pero tendré muy en cuenta tus comentarios.

Saludos
KirsonX

KirsonX 02/05/2005 14:30

Pequeño tutorial de iReports
 
Pequeña contribucion

http://www.adictosaltrabajo.com/inde...ina=tutoriales

KirsonX 02/05/2005 16:14

Problema con response.getOutputStream();
 
Al generar el reporte me ha dado problemas en la linea ServletOutputStream ouputStream = response.getOutputStream(); me dice que la funcion getWriter() ya ha sido llamada, si alguien tiene alguna idea o le ha pasado esto antes le agradeceria su ayuda

Saludos
KirsonX

Ctx(Arquero23) 02/05/2005 16:27

Hola Laraos Yo tuve el mismo problema cuando compilaba mi reporte salia perfecto, cuando le hice la prueba desde mi localhost ningun problema, el problema fue cuando tuve que subirlo al servidor donde esta alojado el sitio,

bueno lo primero que hice en mi reporte fue insertarle un cuadro de "image tool" en la pestaña image le asigne el siguiente parametro $P{ruta}

en parameters---->parameters defini un nuevo parametro llamado "ruta", de tipo string con el siguiente valor por defecto "C:/carpetamadre/carpetadeweb/imagenes/image1.jpg"

que es donde se encuentra mi imagen en mi maquina local.

compile mi reporte y todo bien

ahora me fui al archivo que me permite hacer el enlace y llamar al reporte el cual pongo el siguiente ejemplo:

<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="proyectomio.comun.UtilDB" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>

<%
File reportFile = new File(application.getRealPath("/Reportes/puesto.jasper"));//Este es la direccion del sitio donde tengos los .jasper y hago referencia al archivo

Map parameters = new HashMap();
parameters.put("ruta",request.getRealPath("/imagenes/image1.jpg"));//aqui defino la ruta donde actualmente se encuentra alojado el proyecto la detecta automaticamente

byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
UtilDB.getConnection()
);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>


Bueno eso es todo y ya puedo correr la pagina y verse bien
cabe mencionar que estoy trabajando en el Jbuilder y es un proyecto de paginas web y tengo un pool,UtilDB.getConnection() que es el que le pasa los parametros de la connecion.Espero que te sirva la informacion, Saludos!!

laraos 02/05/2005 16:39

Muchas Gracias Ctx
 
Ctx lo que pasa es que tambien tengo problemas con los graficos que hago desde ireport con la libreria jfreechart, sera que la solucion que me das para este problema sirve tambien cuando son este tipo de graficos?

laraos 03/05/2005 19:33

Ayuda graficos Ireport
 
Alguien ha hecho un grafico 3D en ireport?, alguien tiene un ejemplo?

MMF 04/05/2005 04:09

Hola, necesito realizar un reporte de una query bastante compleja y mi problema es que los parámetros que se utilizan en la query los ponen entre comillas simples lo que no es muy util en la mayoría de los casos, por ejemplo, al llegar al WHERE campo IN (${parametro}) utilizo una cadena de enteros separados por comas y el problema es que al insertarlos como parámetro los engloba entre las dichosas comillas con lo que sólo me recoge el primero de ellos (en el mejor de los casos).
Se pueden definir los parámetros para que no aparezcan estas comillas?

Ctx(Arquero23) 04/05/2005 10:05

Cita:

Iniciado por laraos
Ctx lo que pasa es que tambien tengo problemas con los graficos que hago desde ireport con la libreria jfreechart, sera que la solucion que me das para este problema sirve tambien cuando son este tipo de graficos?


no lo he intentado laraos, esto es para imagenes que ya tienes guardadas en disco duro,si se algo luego te aviso.

laraos 05/05/2005 03:23

Por favor ayuda!!!
 
IMPORTANTE! Ocurre que cuando exporto a PDF me aparece un error de que el scriplet no puede ser cargado. Resulta que al compilar un reporte con graficos se genera un archivo .java llamado por ejemplo reportescriplet.java. Este es el archivo que no me permite exportar a PDF. Alguien sabe o tiene una idea de lo que se debe hacer?

acano 05/05/2005 05:29

Ayuda para pasar del archivo .jasper al pdf desde JSP
 
Bien, tengo ya mi archivo .jasper y kiero verlo en pdf desde mi aplicacion en la q estoy utilizando JSP
Tengo este codigo:

Map parameters = new HashMap();


byte[] bytes =

JasperRunManager.runReportToPdf(

"C:\\iReport-0.4.1\\reportsantonio\\EntradasN.jasper",

parameters,

conn

);



al cual no le mando parametros ni nada aun. Compila sin problema, pero levanta una excepcion diciendo q no puede cargar el objeto.

Error:
Error loading object from file : C:\iReport-0.4.\reportsantonio\EntradasN.jasper

Tengo las libreria en su sitio, y ya no se pq puede ser.
Por favor alguien podria ayudarme :'(

wifer 05/05/2005 07:30

Para Kangulo
 
Muchas gracias por tu respuesta, hemos logrado un avance considerable, pero aun me falta algo, creo que dedeb ser librerias o alguna configuración, to tengo la misma plataforma de trabajo que el tuyo, a excepción que la DB es oracle. Al correr el jsp me genera una pagina desconfigurada, la salida la hago a pdf, te envio mi jsp por si ves algun error, te lo agradezco.

<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>

<%
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();


File reportFile = new File(application.getRealPath("/reportes/oto.jasper"));
Map parameters = new HashMap();

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, conn);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>


Mil Gracias WIFER.

wifer 05/05/2005 08:30

Para Kangulo
 
Kangulo

este es el error que me genera cuando corro un reporte desde jsp.

si me puedes ayudar de agradezco.


descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

javax.servlet.ServletException: C:\Tomcat 5.5\webapps\empleo\empleo\reportes\oto.jasper
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:779)
org.apache.jsp.jsp.runreport_jsp._jspService(org.a pache.jsp.jsp.runreport_jsp:82)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)


causa raíz

net.sf.jasperreports.engine.JRException: C:\Tomcat 5.5\webapps\empleo\empleo\reportes\oto.jasper
net.sf.jasperreports.engine.util.JRLoader.loadObje ct(JRLoader.java:74)
net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:162)
net.sf.jasperreports.engine.JasperRunManager.runRe portToPdf(JasperRunManager.java:125)
org.apache.jsp.jsp.runreport_jsp._jspService(org.a pache.jsp.jsp.runreport_jsp:65)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)


nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/5.5.8.

DestruKtor 05/05/2005 08:54

pasar consulta completa como parametro
 
Hola nuevamente a todos!

Una pregunta, alguno ah encontrado la forma de pasar una consulta completa???

por más que intento en el IReport definir el query como un parametro $P{sql} y pasarle la consulta completa desde afuera, cuando trato de ejecutar el reporte da error y aunque lo puedo compilar ignorando esto, tras ejecutarlo mediante jsp. no funciona aludiendo a error en la consulta.

alquien ah logrado solucionarlo??, por que tengo una consulta muy complja como para definirla con parametros para cada condicion

Gracias como siempre

DestruKtor

Kangulo 05/05/2005 12:05

Para Wifer
 
Hola Wifer, aparentemente no veo ningun problema en tu codigo, si tu reporte corre en iReport perfectamente y en JSP no, entonces quedaría por descartar las versiones de los archivos en ambas partes, porq que lo que puede estar sucediendo es que lo estas compilando con una version pero lo intentas visualizar con otra, lo cual, por experiencia, da problemas.

Por lo tanto quisiera que verificaras que los *.jar sean los mismos tanto en los directorios iReport\lib como en Tomcat\common\lib


Basicamente estos son los archivos que yo utilizo y q necesitas que sean de igual versión en ambas partes son:

poi-2.0-final-20040126.jar
itext-1.2.jar
jasperreports-0.6.5.jar
mysql-connector-java-3.1.6-bin.jar (En tu caso sería el de Oracle)

luego que las versiones de estos archivos sean iguales reinicia el servidor y prueba a ver y me comentas.

Suerte

Kangulo 05/05/2005 12:27

Como Pasar la Cosulta completa como parametro?
 
DestruKtor, yo lo intente varias veces pero no pude solucionarlo, el problema es que tienes que tener un parametro tipo String, pero al enviarlo como parametro y al ser de este tipo queda el query de esta manera:

'Select * from...'

y lo que pasa entonces es que el ireport no lo toma como un query sino como un literal o string lo cual no es lo q queremos,
asi que, mi solución fue que creé tres reportes, en mi caso, como filtros en el sql tengo y de acuerdo a los filtros seleccionados en el jsp mando a ejecutar uno u otro pagina que llama a uno u otro reporte y le paso los parametros.

Ejemplo de un query sencillo con dos parametros:

tengo un reporte para paises
tengo otro para ciudades
tengo otro para ciudades y paises

se que no es una solucion muy inteligente que se diga, porq realmente debería ser un solo reporte, pero debido a la premura del requerimiento me vi en la obligación de hacerlo de esta manera, y cumple con la funcion, la gran desventaja de esto es, como todo sabemos, el mantenimiento del reporte, si me mandan a agregar, modificar o quitar algo en el reporte, tengo que hacerlo a los tres reportes en vez de uno.

Por eso la importancia y mi interes de que si alguien consigue como realizar esto se lo agradeceria ya q me sería de mucha utilidad.

Saludos y Suerte.

MMF 06/05/2005 05:04

DestruKtor, Kangulo

Veo que todos teníamos el mismo problema: aparecen las dichosas comillas siples que engloban al parámetro y provocan que falle la query.

Creo que he encontrado la solucion en la "JasperAssistant User Guide": si en lugar de usar $P{sql_query} usais $P!{sql_query} desaparecen las comillas por lo que ya no debería producirse el error.

Saludos desde España

stavera 06/05/2005 07:59

Jsp
 
Acano mira mi jsp para que verifique donde esta el error:

File reportFile = new File(application.getRealPath("/reportes/oto.jasper"));
Map parameters = new HashMap();

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, conn);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

al principio se presentaban dos errores que eran el mismo tuyo y porque no encuentra la ruta con tu la estas invocando y el otro era en el parametro, ya que habia que definirlo haci no tuviera ninguno.

Espero que te sirva, si alguna duda me cuentas.

:adios:

KirsonX 06/05/2005 08:31

PDF Vacio
 
Hola a todos, estoy ejecutando mi reporte con el siguiente ambiente
BDD Oracle.
El archivo jasper esta almacenado en una tabla es recuperado por una funcion y enviado hasta el front end por medio de un middle tier construido con EJB. La pagina se ejecuta perfectamente, sin embargo el mismo reporte que al correrlo desde una aplicacion java o desde ireports se presenta bien, al ejecutarlo en la JSP se despiegla vacio, es decir sin contenido?
A alguno de ustedes le ha pasado algo similar o tiene alguna idea?
Muchas gracias por su ayuda

stavera 06/05/2005 09:09

Mostrar reporte en el visualizador de iReport
 
Hola Destructor tengo una pequeña pegunta, para mostrar el reporte por medio el visor propio de jasperreport al principio del foro a laraos le distes la indicacion de que con la funcion JasperViewer() y pasandole algunos paramentros lo podría hacer, me gutaria saber como se le envian estos paramentros, estoy trabajando con un jsp.

Muchas gracias por tu ayuda.

:adios:

marcelo_v 08/05/2005 22:38

Hola a todos:
Yo tb estoy utilizando el jasperReport, al igual q el iReport, utilice el codigo q esta arriba, si me salen los reportes cuando el reporte no necesita parametro, pero los q tienen parametro, me sale error:
java.io.FileNotFoundException: D:\PROYECTO\Ferreteria\src\ferreteria\Reportes\R_N otaCompra.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObje ct(JRLoader.java:74)
at net.sf.jasperreports.engine.JasperFillManager.fill Report(JasperFillManager.java:162)

Espero q me puedan ayudar

acano 09/05/2005 01:05

No entiendo porque, sigo sin solucionarlo
 
Por favor Destruktor aver si tu o alguien puede ayudarme.
Antes de nada darte las gracias STAVERA pero me sigue dando el mismo error, teniendo exactamente el mismo codigo, no lo entiendo.
Este es mi codigo:

File reportFile = new File(application.getRealPath("/reports/EntradasN.jasper"));

Map parameters = new HashMap();

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (),parameters,conn);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();




Y esta es la excepcion q levanta:

Error:Error loading object from file : C:\proyectos\Pruebas\PruebasIReports\public_html\E ntradasN.jasper


No tengo ni idea pq puede ser, porfavor agradeceria mucho si alguien pudiera ayudarme.

Kangulo 10/05/2005 05:34

Pasar Query Completo por Parametro
 
Cita:

Iniciado por MMF
DestruKtor, Kangulo

Veo que todos teníamos el mismo problema: aparecen las dichosas comillas siples que engloban al parámetro y provocan que falle la query.

Creo que he encontrado la solucion en la "JasperAssistant User Guide": si en lugar de usar $P{sql_query} usais $P!{sql_query} desaparecen las comillas por lo que ya no debería producirse el error.

Saludos desde España

Bravo MMF :-)
Lo he probado y funciona de maravilla, ya no uso tres reportes sino uno solo maestro y de acuerdo a los filtros paso el query como parametro, de verdad Gracias MMF ha sido muy valiosa tu colaboracion.

Agradecido desde Venezuela. :aplauso:

stavera 10/05/2005 07:48

Para Acano
 
Mira, ya verificastes todas tus librerias, recuerda que las librerias deben de ir en la carpeta lib de ireport y tambien en la Tomcat para que tu jsp lo tome.

Otra solución es la versión del PDF, ya tienes la 7 si no bajala para que te funcione bien, ya que por extrañas razones solo funciona con esta version.

Si tienes alguna otra duda y te puedo ayudar con mucho gusto.

KirsonX 10/05/2005 08:20

Para acano
 
Yo tenia el mismo problema y se debe definitivamente a las librerias. Revisa la version de iReports que estas utilizando, en la carpeta lib del iReport tienes el jar del jasperreports, este jar debe ser el mismo jar que tengas ubicado en tu servidor web (tomcat o cualquiera que uses) de lo contrario siempre te va a pintar el mismo error.

Saludos
KirsonX

stavera 10/05/2005 08:33

Para Kangulo
 
Hola Kangulo
Tengo una pequeña pegunta: has generado reportes por medio del visor propio de jasperreport? mira que al principio del foro Destruktor a laraos le dio las indicaciones de que con la funcion JasperViewer() y pasandole algunos paramentros lo podría hacer, me gutaria saber si lo has trabjado y me puedes ayudar, estoy trabajando con un jsp.

Muchas gracias por tu ayuda.

:adios:

KirsonX 10/05/2005 13:19

Ayuda con subreportes
 
Alguno de ustedes dispone de algun ejemplo con subreportes?
Muchas gracias

Kangulo 10/05/2005 15:26

Para Stavera
 
Cita:

Iniciado por DestruKtor
...si es mediante un JSP, envias el reporte de esta manera al browser, no abres el acrobat y le pasas ninguna ruta, si no que generas el reporte como salida y lo escribes en el buffer de salida hacia el browser y el browser solo ejecuta acrobat y abre tu reporte de esta manera

Código:

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, conn);
....si es una aplicacion java usa la funcion
JasperViewer() de la clase
net.sf.jasperreport.view

Hola Stavera: Lamentablemente no he tenido oportunidad de trabajar con iReports desde una aplicacion java de escritorio, hasta los momentos lo poco que he trabajado lo he hecho en un entorno Web, con paginas JSP y Servlets, pero por la explicación que dió Destruktor, me parece que el visor de jaspert solo funciona para aplicaciones que NO se corren sobre un browser, es decir, aplicaciones java de escritorio solamente, y por lo que me dices tu estas trabajando con JSP.

Por otro lado, porque quieres utilizar el Visor de Jasper?, si tu problema es visualizar el reporte en web, a través de todo el foro se han dado ejemplo de como hacerlo en PDF,HTML y Excel.

Si tienes algun inconveniente con esto ultimo, Stavera, puedes postear tu problema y con gusto yo o cualquiera de nosotros te ayudaremos.

Espero haberte sacado de dudas.

Saludos :adios:

stavera 11/05/2005 08:22

Para Destruktor
 
Hola Destruktor, haber si te entiendo solo se coloca la linea que me envias y mi codigo quedaria así si lo hago en el jsp
File reportFile = new File(application.getRealPath("/reportes/oto.jasper"));
Map parameters = new HashMap();

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, conn);

response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

O como sería no te entiendo muy bien.

Muchas gracias por tu ayuda :adios:

KirsonX 11/05/2005 08:44

Mas dudas sobre subreports
 
Hola Laraos gracias por la referencia del manual.
Para todos tengo una duda con los subreportes, observo que en algunos tutoriales que el reporte maestro puede tener varios subreportes y en general un subreporte se construye como un reporte adicional. Bien esto me genera varios archivos jasper. En el esquema que estoy manejando yo dispongo de una BDD en la cual subo los compilados y luego en la jsp al invocar al reporte, obtengo el jasper desde la base. Al tener varios jasper se me complica un poco el manejo, entonces sería posible que se genere un único archivo jasper?

Saludos
KirsonX

patasgreen20 12/05/2005 09:24

Cualquier AYUDA es buena Hola que tal, tengo un problema con mi reporte, ya que al momento de llamarlo, se ejecuta el acrobat, pero me lo manda en blanco, ni lo que esta dibujado me parece, lei en secciones anteriores que posiblemente de debe a la version del archivo Jasperrepor.0.6.??? yo tengo las 2 la 0.6.6 y 0.6.4, de hecho si me marcaba este error "net.sf.jasperreports.engine.JRException: Error loading object" al dejar solo el archivo "Jasperrepor.0.6.4" se quito el error, pero el PDF sigue saliendo VACIO, alguien me puede ayudar con esta cuestion? de antemano Gracias!!

KirsonX 12/05/2005 11:36

Separacion de lineas
 
Hola a todos, he logrado hacer funcionar un subreporte, ahora tengo problemas con el espaciado de las lineas... y como debo hacer para que los datos del subreporte no se desborden y no interfieran con el resto del contenido del reporte maestro
Si tienen alguna idea se los agradezco

patasgreen20 12/05/2005 13:24

ACANO Se debe a los archivos jasperreport-0.6.6 o jasperreport-0.6.4, pero... te voy a causar otro error, digo para que este como yo, yotengo configurado el jasperreport-0.6.6 en la ruta, ireport\lib y en Root\WEB-INF\lib del tomcat, pero cuando corro la aplicacion al momento en que se habre el acrobat, sale el archivo en blanco, si no te pasa esto me lo haces saber!
Suerte!

Kangulo 12/05/2005 17:01

Ruta de una Imagen por Parametro
 
Hola A Todos, si alguien sabe por favor como cargar un reporte el cual tiene una imagen que se guarda en una carpeta en el servidor y la ruta de esta imagen esta una base de datos, si le coloco como parametro en la ruta de la imagen el campo de la base de datos no me permite compilar el reporte, alguien sabe como se hace esto?

Saludos.

KirsonX 13/05/2005 08:07

Secciones ocultas
 
Es posible definir que algunas secciones y campos de texto del documento se oculten o se muestren en funcion de uno o varios parametros q se pueda pasar al reporte

KirsonX 13/05/2005 09:01

Consulta a un datasource
 
Alguno d ustedes conoce si es posible estructurar una consulta a un datasource en un reporte con iReports<??

Saludos
KirsonX

patasgreen20 13/05/2005 11:13

KirsonX Me podrias ayudar, estoy un poco desesperado, por mi reporte me sale en blanco, el mismo problema que tu tenias y que por lo que veo ya solucionaste, muchas gracias de antemano

KirsonX 13/05/2005 11:21

hola parasgreen
 
es verdad mi problema se arreglo aunque no estoy muy seguro de como...
como estoy en un ambiente de desarrollo y estoy probando codigo cada vez, me encontre con que habia dejado mucho codigo inutil q no tenia nada q ver con el reporte asi q lo empece a retirar hasta dejar solo lo esencial para mi reporte y empezo a funcionar sin mas problemas

lo deje como sigue a continuacion

byte[] bytes = null;

log.trace("Cargar archivo desde el Blob");

JasperReport report = (JasperReport)JRLoader.loadObject(barchivo.getBina ryStream());

log.trace("Tomar campos (fields) del archivo");
String[] vcampos = PDFReport.getJRFieldNames(report);
log.trace("vcampos[0]: "+vcampos[0]);
log.trace("Tamaño col "+dataReporte.size());

log.trace("llamando a collectionToObjectMatriz");
//Object[][] vdata = collectionObjectVectorToObjectMatriz(dataReporte);//collectionToObjectMatriz(dataReporte);
Object[][] vdata = collectionToObjectMatriz(dataReporte);
log.trace("Data es vdata " + vdata.length+vdata[0][0].toString());

log.trace("Generando data source.");
GenericReportDataSource grds = new GenericReportDataSource(vcampos,vdata);
Map parameters = new HashMap();
parameters.put("Titulo", "RUC");

log.trace("runReportToPdf");
bytes = JasperRunManager.runReportToPdf(barchivo.getBinary Stream(),parameters ,grds);
log.trace("luego de runReportToPdf");

if (bytes != null && bytes.length > 0)
{
log.trace("Salida ...");
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream.close();
log.trace("Fin Salida ...");
}

Kangulo 13/05/2005 11:26

Reporte con datasource
 
Kirxon: lo q tienes q sustituir en el codigo es la cadena de conexion por

/*
Connection conexion;
String DRIVER = "org.gjt.mm.mysql.Driver";
String USERNAME = "exo";
String PASSWORD = "exo";
String URL= "jdbc:mysql://localhost/siguard";

Class.forName(DRIVER).newInstance();
conexion = DriverManager.getConnection(URL,USERNAME,PASSWORD) ;
*/


Context init = new InitialContext();
Context context = (Context) init.lookup("java:comp/env");
DataSource dataSource =(DataSource)context.lookup("jdbc/[Nombre del datasource]");
Connection conexion = dataSource.getConnection();

y lo demas lo mantienes igual...de todos modos en las preguntas y respuestas anteriores aparece un ejemplo completo.

Saludos

Kangulo 13/05/2005 11:33

Para patasgreen20
 
Para todos: Es recomendable que leamos todas las preguntas y respuestas que ya han sido posteadas ya que en ellos podemos encontrar una solucion previa al problemas que tenemos y evitamos saturar al foro con preguntas q ya han sido solucionadas con anterioridad, de esta manera tendremos un foro mas rico en cuanto a variedad de soluciones y conocimiento.



Cita:

Iniciado por Kangulo
Hola Wifer, aparentemente no veo ningun problema en tu codigo, si tu reporte corre en iReport perfectamente y en JSP no, entonces quedaría por descartar las versiones de los archivos en ambas partes, porq que lo que puede estar sucediendo es que lo estas compilando con una version pero lo intentas visualizar con otra, lo cual, por experiencia, da problemas.

Por lo tanto quisiera que verificaras que los *.jar sean los mismos tanto en los directorios iReport\lib como en Tomcat\common\lib


Basicamente estos son los archivos que yo utilizo y q necesitas que sean de igual versión en ambas partes son:

poi-2.0-final-20040126.jar
itext-1.2.jar
jasperreports-0.6.5.jar
mysql-connector-java-3.1.6-bin.jar (En tu caso sería el de Oracle)

luego que las versiones de estos archivos sean iguales reinicia el servidor y prueba a ver y me comentas.

Suerte


patasgreen20 13/05/2005 11:44

Cita:

Iniciado por Kangulo
Para todos: Es recomendable que leamos todas las preguntas y respuestas que ya han sido posteadas ya que en ellos podemos encontrar una solucion previa al problemas que tenemos y evitamos saturar al foro con preguntas q ya han sido solucionadas con anterioridad, de esta manera tendremos un foro mas rico en cuanto a variedad de soluciones y conocimiento.

Si ya me chute todo el FORO y ya hice todo lo que decia, pero me sigue saliendo en blanco.

KirsonX 13/05/2005 11:56

Para kangulo y todo aquel q pueda darme una mano
 
Hola a todos voy a ser un poco más específico con mis dudas, pues sospecho que tengo uno de los escenarios más complicados de resolver dentro del foro y he de requerir de toda la ayuda posible para solventarlo.
Mi escenario es el siguiente:
Estoy desarrollando un esquema de generacion de reportes para una institucion publica. Se busca que sea lo mas generico y flexible posible .
Tengo varios retos importantes
1) Mis reportes van a ser generados por usuarios que desconocen por completo el esquema de la BDD, asi que el reporte no usa un objeto conexion sino un JRDatasource. Este datasource debia ser genérico pues no es la idea definir 1 objeto JRDatasource para todos los casos. Hice mi propia implementación basándome en los ejemplos de jasper y aparentemente funcionaria mi esquema.
2) Almacenar la plantilla del reporte en una BDD Oracle, recuperarlo cuando se requiera y sin descargarlo a disco ejecutar el reporte. Esta parte ya la resolvi gracias al uso de objetos BLOB y al metodo JasperReport report = (JasperReport)JRLoader.loadObject(barchivo.getBina ryStream()); que me permite cargar el reporte desde un inputstream.
3) Por la estructura de los documentos me veo obligado a usar subreportes. Ya logre un ejemplo con subreportes. Sin embargo desde mi aplicacion DEBO seleccionar varios datos de entradas y con ellos mandar a generar el reporte. Si tuviera q enviarlos de 1 en 1 NO tendria problemas, pero desean q si escoge 1 o varios datos, el resultado se muestre en un único PDF (en el browser) donde por cada nuevo dato se reinicie la numeración de las páginas.
Para esto yo envio al reporte maestro su propio datasource y desde el reporte maestro le paso otro datasource al subreporte(x parametros). los dos datasource solo tienen un dato en comun que puede ser un dato de identificacion de persona, pero el conjunto de informacion que presentan es completamente distinto. Debo resolver el tema de la numeracion de las paginas y lograr q para entradas múltiples se presente la información del SUBREPORTE para todos los casos. Actualmente solo el primer dato se carga con información en el subreporte y a los subsiguientes no les llega la información.
Espero haber sido claro y si tienen ayudas o sugerencias que me puedan proporcionar lo agradecere mucho
Saludos
KirsonX

COCOL 15/05/2005 16:13

Ejemplo de como usar Jasper Report en Java
 
Me preguntaba si alguien me quisiera dar un pequeño ejemplo de como usar Jasper Report en Java... ya tengo listo iReport ... solo me falta mostrar los reportes desde Java... me gustaría que me dijeran como instalar Jasper Report... y un pequeño ejemplo en codigo en Java....

Se los agradeceré mucho...

DestruKtor 16/05/2005 07:10

Cita:

Iniciado por MMF
DestruKtor, Kangulo

Veo que todos teníamos el mismo problema: aparecen las dichosas comillas siples que engloban al parámetro y provocan que falle la query.

Creo que he encontrado la solucion en la "JasperAssistant User Guide": si en lugar de usar $P{sql_query} usais $P!{sql_query} desaparecen las comillas por lo que ya no debería producirse el error.

Saludos desde España

Exelente :) muchas gracias!!!! :arriba:


La zona horaria es GMT -6. Ahora son las 03:51.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.