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/)

KirsonX 28/04/2005 08:22

Gracias Kangulo...
 
Voy a probarlo

KirsonX 28/04/2005 08:25

Reporte tipo documento (Para Kangulo y Destructor)
 
No se si puedan darme alguna sugerencia, tengo algunas plantillas de documentos que pueden tener 1 o varias páginas cada una diferente. En cada una tengo varios campos que deben ser llenados dinámicamente a partir de una consulta. No estoy muy seguro de poder lograr que la estructura de reportes de iReports + jasperreports se ajuste a lo que necesito.

Si pueden darme alguna sugerencia les agradeceré infinitamente.

Saludos

KirsonX

wifer 28/04/2005 09:00

como invocar un reporte.jasper
 
Holas
Muchachos ustedes que son los super avanzados en ireport, segun veo en el foro, quiero pedirles el favor de que me indiquen de como invocar un reporte.jasper desde un jsp, en el reporte hecho con ireport tengo el select y todos los formateos, por el IDE visualizo el resultado en excel que es lo que necesito, ahora quiero integrarlo a mi aplicacion hecha en java y creo que se puede invocar desde un jsp. el reporte no pide parametros.

mil gracias

DestruKtor 28/04/2005 12:20

Cita:

Iniciado por wifer
Holas
Muchachos ustedes que son los super avanzados en ireport, segun veo en el foro, quiero pedirles el favor de que me indiquen de como invocar un reporte.jasper desde un jsp, en el reporte hecho con ireport tengo el select y todos los formateos, por el IDE visualizo el resultado en excel que es lo que necesito, ahora quiero integrarlo a mi aplicacion hecha en java y creo que se puede invocar desde un jsp. el reporte no pide parametros.

mil gracias

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.

DestruKtor 28/04/2005 12:22

Para: KirsonX
 
KirsonX, lo que quieres hacer me temo, no podras hacerlo con jasperreport, espero equivocarme, por que seria muy bueno lo que pides. Pero no hay forma de meter en un unico reporte otros a la cola de ese en una nueva pagina

KirsonX 28/04/2005 12:22

Para Wifer, llamar reporte desde JSP
 
Prueba este codigo que viene en los ejemplos de jasperreports

<%@ page errorPage="error.jsp" %>
<%@ page import="datasource.*" %>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>

<%
File reportFile = new File(application.getRealPath("/reports/WebappReport.jasper"));

Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("BaseDir", reportFile.getParentFile());

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

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

DestruKtor 28/04/2005 12:27

Fecha Hora generacion reporte
 
Hola a todos, mi inquietud es la siguiente

En un reporte lo ideal muchas veces es insertar en esta la fecha de generación de el, pues esto se podria hacer pasando como parametro la fecha desde fuera.

ahora bien iReports, cuenta con Variables dentro de donde esta el numero de paginas y otras y uno puede definir algunas, es posible definir una de estas variables para cargar la fecha dentro del reporte? sin pasarlo como parametro externo?

alguna idea?

KirsonX 28/04/2005 16:05

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

Kangulo 28/04/2005 16:43

Hola Chic@s
 
KirsonX: :pensando: La unica sugerencia que te puedo dar es que intentes probar con subreportes, es un poquito complicado pero es una opcion, trata de organizar la información en dos reportes, uno padre y otro hijo, colocando el reporte hijo en la sección de Sumary del reporte padre, el cual será el primero que llamaras pasandole la consulta como parametro al reporte hijo y de esta manera podras tener al menos 4 paginas diferentes en un mismo reporte.

De todos modos aqui encontraras un buen manual, gracias a Francesc Rosés Albiol, :arriba: que habla sobre el tema y lo mejor totalmente en español.

http://www.javahispano.org/tutorials.item.action?id=50

Espero te sirva de ayuda.


DestruKtor: :si: Hola DesctruKtor, existen dos maneras de que el reporte imprima la fecha y hora en que se imprime sin necesidad de pasarle estos datos por parametros:

La Primera es, Insertas un Textfield box y en la parte de propiedades en la pestaña de Text Field, en el combo de Textfield Expression Class seleccionas la clase java.util.Date y mas abajo en la parte de Textfield Expression colocas: new Date().

Pero si vas a imprimir esto mas de una vez en el reporte te recomiendo que crees una variable, que es la segunda manera, y le especifique todos los datos de la anterior y luego colocas la variable en las partes donde deseas imprimirla.


Saludos..
:adios:

KirsonX 28/04/2005 17:16

Para Kangulo
 
Muchas gracias el documento está muy completo ya he empezado a revisarlo

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


La zona horaria es GMT -6. Ahora son las 07:48.

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