| |||
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 |
| |||
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 |
| ||||
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
__________________ Se Despide DestruKtor |
| |||
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(); %> |
| ||||
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?
__________________ Se Despide DestruKtor |
| |||
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 |
| |||
Hola Chic@s KirsonX: ![]() De todos modos aqui encontraras un buen manual, gracias a Francesc Rosés Albiol, ![]() http://www.javahispano.org/tutorials.item.action?id=50 Espero te sirva de ayuda. DestruKtor: ![]() 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.. ![]() |
| |||
Cita: 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.
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. Mil gracias DestruKtor por tu oportuna respuesta. |
| |||
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 |
| |||
Para wifer Wifer primero que nada definamos el ambiente de desarrollo, en mi caso, estoy usando
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... ![]() |
| |||
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 |
| ||||
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.
__________________ Se Despide DestruKtor |
| ||||
Cita: 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
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.
Código:
y si lo quieres obtener en html, asibyte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parametros, conexion);
Código:
en excellJasperRunManager.runReportToHtmlFile(reportFile.getPath(),HtmlFilesSource + htmlFileName, parametros, conexion);
Código:
Ve los codigos posteados, y esto con ello tendras todo lo necesario para ejecutar tu reporte. 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()
__________________ Se Despide DestruKtor |
| |||
![]() 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!! |
| |||
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 |
| |||
Pequeño tutorial de iReports |
| |||
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 |
| |||
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!! |
| |||
![]() 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? Última edición por laraos; 02/05/2005 a las 16:49 |
| |||
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? |
| |||
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. |
| |||
![]() 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? |
| |||
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 ![]() |
| |||
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. |
| |||
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. |
| ||||
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
__________________ Se Despide DestruKtor |