Creación de Reportes en Java – Parte I

En este post hablaba sobre la incorporación de iReport a NetBeans 6.0 con el plugin que sacaron los mismos desarrolladores de iReport (veáse para conocer el link de descarga y la instalación en NetBeans 6.5)

Ahora que ya tenemos incorporado iReport en NetBeans, vamos a ver como generar un sencillo reporte. (Nota: El plugin solo funciona con la versión final 6.0 de NetBeans)

HERRAMIENTAS UTILIZADAS

  • NetBeans 6.5
  • Plugin iReport para NetBeans 3.1.2
  • MySQL 5
  • El proyecto completo se puede descargar de aqui:

http://www.mediafire.com/?dz9cxgtigzt

http://www.mundobyte.net/archivos/Java_2007/Ejemplo_Reportes.zip

el archivo se llama Ejemplo_Reportes.zip

CREACIÓN DE LA BASE DE DATOS

Aunque si es cierto que adjunto tambien la carpeta del proyecto de NetBeans, obviamente que es recomendable realicen este ejercicio por cuenta propia pues les servira como práctica.

El script sql esta adjunto en la carpeta bajo el nombre de addressbook.sql, y contiene una simple y sencilla tabla a modo de ejemplo para este ejercicio.

Para ejecutar dicho script y crear la base de datos, basta con entrar a la línea de comandos de MySQL y escribir:

source C:\addressbook.sql

donde obviamente deben sustituir la ruta por donde se encuentra tal fichero. Si se tiene la herramienta MySQL Administrator, se puede restaurar el backup de este script sql. Con esto ya tendremos la BD creada.

Connections/DataSources

Una vez instalado el plugin y creada la BD, vamos a establecer la conexión a la Base de Datos por medio de JDBC pero antes de eso, debemos establecer el classpath donde se encuentra el driver JDBC para nuestro DBMS, en este caso el driver Connector/J. Dicho conector viene por defecto con NetBeans, se puede encontrar en la ruta /usr/local/netbeans-6.5/ide10/modules/ext

En el menú Herramientas–Opciones buscamos en la parte superior un botón con el logo de iReport y le damos clic para posteriormente ir a la pestaña de CLASSPATH. Agregamos el fichero jar del driver y con esto ya podemos pasar a establecer la Conexión a la BD.

Vamos al menú Herramientas – Report DataSources y pulsamos sobre el botón New para agregar una nueva conexión. Aparecera una ventana como la mostrada en la imagen.

DataSource_Ireport

Tenemos varias opciones las cuales no explicaré (además que no he usado todas). Usaremos una conección JDBC que es la que debemos usar para conectarnos a DBMS como MySQL, PosgreSQL, Oracle, entre otros más, por lo cuál seleccionaremos la segunda opción “NetBeans DataBase JDBC Connection”.

Posteriormente pasaremos a otra ventana en donde debemos seleccionar la conexión que previamente establecimos en NetBeans

datasource2_ireport.png

Una ves guardados los cambios deberemos agregar un archivo visual para diseñar nuestro reporte, para ello vamos al “source package” (Paquete de fuentes) y agregamos un “Empty Report” (si no aparece en la lista, lo buscamos en otros). Al hacer esto, aparecera en NetBeans el diseñador visual de iReport. Tendremos un área dividida varias regiones, PageFooter, columnFooter, columnHeader, etc. Para más información referente a cada una de ellas puede visitar el siguiente tutorial, aunque maneja una versión algo vieja de iReport sirve como referencia o bien, se puede buscar más información en internet.

Para este ejemplo, solo vamos a utilizar las regiones de title, pageHeader, columnHeader, detail y pageFooter, por lo cuál deberemos ocultar las demás estableciendo un valor de 0. En uno de los paneles izquierdos que hay en NetBeans encontraremos algo como lo que muestra la siguiente imágen.

parametros_ireport.png

Por lo tanto, deberemos seleccionar las regiones sobrantes y en el panel de propiedades que esta en el lado derecho, debemos establecer el valor de Band height a 0 y con esto notaremos que desaparecerá dicha región en el área de diseño.

Una vez hecho lo anterior, solo deberemos tener en el área de diseño las 5 regiones mencionadas con anterioridad.

Podemos observar que en el panel derecho tenemos una pequeña paleta de componentes. Entre ellos el Static Text y Text Field.

La diferencia entre ámbos es que el Static Text es en si como su nombre lo dice, “Texto Estático”, es decir, nos va servir para poner los rotulos y titulos de nuestros reportes. En cambio, el Text Field sirve para mostrar los resultados de la consulta a la Base de Datos para generar nuestro reporte.

Antes de hacer el diseño, primero vamos a establecer la consulta y a definir las variables necesarias. En el menú File–Report query deberemos escribir la consulta SQL. Haga click en la figura de abajo para ver su tamaño original y observe la sencilla consulta SQL y el resultado que nos genera en la parte de abajo. Realice esto mismo y al término presione el boton de OK.

query_ireport.png

En el panel de la izquierda de iReport, veremos que al desplegar la opción de Fields, tendremos los campos que deseamos obtener con la consulta SQL. En este caso, tendremos name, telefono, email.

Ahora ya estamos listos para diseñar el reporte. En la segunda parte de este breve tutorial veremos como hacerlo.

56 comentarios

  1. [...] de Reportes en Java – Parte II Publicado el Enero 6, 2008 por windoctor En la primer parte de este tutorial establecimos los parámetros necesarios para el diseño de nuestro reporte con [...]

  2. [...] Comentarios Recientes windoctor en Creación de Reportes en Java …HUGO HERNANDEZ en Creación de Reportes en Java …Drawsoek en Bases de datos web fácilmente…Creación de Reporte… en Creación de Reportes en Java …Creación de Reporte… en Creación de Reportes en Java … [...]

  3. [...] Recientes NetBeans 6.0 + iRepo… en Creación de Reportes en Java …windoctor en Creación de Reportes en Java …HUGO HERNANDEZ en Creación de Reportes en Java [...]

  4. Excelente felicidades…

  5. Estuve checando el tutorial y lo empece a aplicar, pero me trabe en una parte: cuando le doy click en tool-iReport Claspath no me aparece nada, espero k me ayuden

  6. Lo que dice en el tutorial es que debe agregar el fichero .jar correspondiente al driver JDBC de MySQL. Lea bien el tutorial, ahi le indica que debe descargar dicho driver de la dirección:

    http://www.mysql.com/products/connector/j/

    UNa vez que termine con éxito esta primer parte, puede psar a la segunda y tercera parte del tutorial.

    saludos!!

  7. hola, sigo atorado todavia en la parte del tutorial k dice Connections/DataSources le doy click y no me aparece nada, agregue el driver con Services y ya esta conectada la Base de Datos, le doy click en tool-iReport Claspath y me sigue sin aparecer nada…porfa me urge saber hacer reportes

  8. Sigo todavia atorado, le doy click en Connections/DataSources pero no me aparece nada, ya baje el conector y lo instale con la pestaña SERVICES y la la BD ya esta conectada, le doy click en el tool-iReport Claspath y me sigue sin aparecer nada.

  9. Mis respetos mi hermano mis respetos demasiado bueno el tutorial me quito el sombrero ante usted y no solo eso la pagina esta super excelente demasiado buena pero buena estuve dando vueltas por ella y me intereso el ejemplo de rmi lastima que no le hiciste un tutorial igual a este pero mis respetos esta sobrado.

    Gracias

  10. no pude hacer el reporte, me pasa igual que al tipo de arriba,
    me sale este error cuando quiero darle test a la conexion:
    ClassNotFoundError!
    Msg: com.mysql.jdbc.Driver
    Possible not found class: com.mysql.jdbc.Driver

    ojala y puedas ayudarme por q necesito mucho sacar el reporte

  11. Pues lo único que pasa es que no encuentra el driver JDBC para mysql. Solamente revisen que estan haciendo todo correcto paso por paso, y que han agregado el driver a su proyecto ó verificar que MySQL se esta ejecutando, para esto último basta con entrar a la linea de comandos y teclear:

    mysql -u root -p password

    y si logran entrar, entonces es el driver que no lo estan agregando correctamente.

    Por otro lado, como el tutorial lo decia, el plugin de iReport era una versión BETA, en febrero se tenia planeado salir la versión final. Aparecio otra version 6.01 de netbeans, visiten su página oficial y actualicen sus versiones (yo aun no lo hago).

    saludos!!
    saludos!!

  12. si era lo que tu decias, pero ahora no me aperece el diseñador visual de iReport donde me meto para que me aparezca, ojalá y puedas ayudarme……. saludos a todos ….. :-)

  13. Me aparece el mismo error:
    ClassNotFoundError!
    Msg: com.mysql.jdbc.Driver
    Possible not found class: com.mysql.jdbc.Driver

    Tengo instalado el conector para mysql (ya lo estaba usando en mi proyecto en la version anterior de Netbeans 5.5) y ahora lo instalé en la nueva version 6.0.1.
    De todas formas, no tengo ningún menú “Tools – iReport”, y he instalado el plugin para iReport. He llegado a la ventana del dibujo desde “Tools -> Report Datasources -> New”.
    Tampoco tengo ningún menú “Data”.
    ¿¿Por qué???

  14. Hola:

    …Para más información referente a cada una de ellas puede <>…

    citas un tutorial, ¿cuál?

  15. Hola,

    NO cito ningún tutorial x ke no me base en ningún tutorial, fue algo que aprendi a hacerlo con iReport hace muchos meses y ahora que salio el plugin para netbeans fue realmente fácil hacerlo.

    saludos!!

  16. Saludos,

    Pero no me quiere reconocer el driver de MySQl y yo hago bien mi conexion desde la aplicacion que podria hacer en este caso?

    Gracias

  17. Hola a todos!
    Para los que les ha salido el problema de
    ClassNotFoundError!
    Msg: com.mysql.jdbc.Driver
    Possible not found class: com.mysql.jdbc.Driver

    O problemas con los path, asegurense de dejar el driver jdbc (el .jar que bajaron desde mysql) en el directorio lib/ de la maquina virtual de java que esten ocupando.

    Ahora, mi consulta windoctor… en mi proyecto tengo unas clases Dao para acceder a los datos. ¿Sabes como puedo hacer uso de estas clases y no hacer directamente las consultas a través del jdbc?
    Agradecido por la respuesta!
    Saludos!
    Roberto

  18. A los que quieran ir un poco más lejos, se pueden hacer reportes de columnas dinámicas usando JasperReports + DynamicJasper (http://dynamicjasper.sourceforge.net) que permite definir practicamente todo en runtime

    Saludos

  19. VOY A PROBARLO DE ANTEMANO DE DOY LA GRACIAS CHAOOOOOOOOOOOOOOOOOOOOOOOO

  20. Hola que tal estoy haciendo un sistema y necesito generar reportes soy principiante en Java y la verdad no tengo ni idea como se hacen. he estado leyendo sobre el tema, aunque que tengo una duda pues estoy utilizando Access como BD y no se si si se pueden hacer??
    Help´me!!

  21. Que tal. tengo el mismo problema:

    ClassNotFoundError!
    Msg: com.mysql.jdbc.Driver
    Possible not found class: com.mysql.jdbc.Driver

    La libreria ya esta cargada en el proyecto, el driver esta actualizado y en su lugar (Lo utilizo para otras operaciones y funciona), que podria ser?

  22. Disculpe mi ignorancia, ya desarrolle el reporte en ireport, pero no lo puedo llamar desde un link, cual será el problema.
    gracias
    orlando

  23. Hola a todos, soy nuevo en java y estoy probando el ireport con NetBeans 6.0, mi pregunta es si puedo pasarle una conexión establecida con usuario y contraseña desde el netbeans o por lo menos usuario y contraseña en una variable a mi conexion del reporte

    Desde ya gracias

  24. De vuelta por acá, el problema de los Class not found se debe a que no sólo basta con instalar el PLUG IN, sino que una vez instalado hay que agregar la libreria al proyecto

    Para eso, click derecho sobre la carpeta Libraries y Add Librarie, seleccionar JasperReport 2.0.5-SnapShot y click an Add Librarie

    Con esto se soluciona todos los males incluso lo mencionado en la Parte III de este tutorial

    Aquí un link, si me sale:

    http://wiki.netbeans.org/ReportesEnNetBeansConIReport

  25. Cuando ejecuro el reporte me da error master null
    No encuentra la ubicación del reporte ya lo copie en dist pero el ejemplo suyo si me sirve pero cuando intento hacer el mio no

  26. HOLA.
    YA REALIZÉ TODOS LOS PASOS Y TE AGRADEZCO MUCHO PORQUE SI FUNCIONA Y MUY BIEN PERO TENGO UN PROBLEMA, NO PUEDO VER LOS QUE LLAMAS “”DISEÑADOR VISUAL DE IREPORT”".
    PORFAS, TE LO AGRADECERÍA AÚN MÁS.

  27. YA ENCONTRÉ DISEÑADOR VISUAL DE IREPORT :)

  28. Pues luego de DataBase JDBC Connection donde conecto a mi BD deberia salirme el diseñador de IReport pero no me sale, hago el test y todo bien pero no encuentro como sacar el diseñador

    ayuda pls que me urge

  29. perdon soy el mismo de arriba pero no se si aparte del plugins de ireport para netbeans 6 tengo que tener Ireport (no el plugin) instalado o que, porque segun las herramientas a utilizar solo necesito el plugin

  30. Estupendo Manual Te Felicito…

    Te agradeceria si crearas uno de Crystal Report

    Gracias

  31. Hola, primero te felicito por el tutorial, está bestial; luego quiero hacerte una consulta, al abrir el reporte creado hay tres pestañas: Designer, XML y Preview. Bien ps la hacer clic en Preview empieza a compilar y generar el reporte, pero en este último paso me sale una excepcion del siguiente tipo:

    javax.xml.parsers.FactoryConfigurationError

    Si puedes ayudarme te lo agradecería bastante

  32. estoy empezando en esto y me sale el mismo error que el men anterior

    javax.xml.parsers.FactoryConfigurationError

    Si puedes ayudarme te lo agradecería bastante

  33. saludos, perfecto , pero no me puedo descargar el proyecto de ejemplo, asi que no se como llamar mi reporte. si alguien puede por favor indiqueme como llamar el reporte desde el boton que se ve en el proyecto. en la imagen.
    rafaelvtaveras@hotmail.com

  34. Hola tambien me sale ese mismo error al hacer click en Preview y aun no se por que

    javax.xml.parsers.FactoryConfigurationError

    por fa si alguien soluciono eso que me diga como lo hizo

  35. Hola en esta pagina encontré la solución al problema
    javax.xml.parsers.FactoryConfigurationError

    http://krloxzz.wordpress.com/2009/01/15/ireport-netbeans-65/#comment-2

    la solución es copiar el archivo que esta en esta dirección

    C:\Archivos de programa\NetBeans 6.5\ireport\modules\ext\xercesImpl.jar

    a esta otra dirección

    C:\Archivos de programa\Java\jdk1.6.0_11\jre\lib\ext

    y listo ya podemos seguir trabajando con este tutorial

    nos vemos

  36. Hola, muy bueno el tutorial de NetBeans y Jasper asi como el de Visual JSF..pero tengo el siguiente problema: Descargue y estoy probando el ejemplo que publicaste, pero al ejecutarlo manualmente (desde contactos.jrxml) me muestra el reporte muy bien; pero al hacerlo desde la aplicacion Java envia un error que dice: “Error cargando el reporte maestro”..¿Alguien me puede ayudar?? por fa’, necesito aprender a generar reportes desde java con urgencia

  37. Compañero Carlos Fernando… El problema que tienes radíca en la clase ReporteAgenda.java… Hay una línea que dice “String master = System.getProperty(“user.dir”) +
    “/reportes/contactos.jasper”;” debes cambiar por “String master = System.getProperty(“user.dir”) +
    “/src/reportes/contactos.jasper”;” para que se puede encontrar el reporte maestro… Espero haberte podido ayudar

  38. Map parametro = new HashMap();
    parametro.put(”fech_ini”, fecha1);
    parametro.put(”fech_fin”, fecha2);
    parametro.put(”Total”, total);

    Hola me pueden decir de donde salen esos valores por ejemplo fecha1 o fecha se supone que esos valores los extraen desde un formulario java como capturan su valor necesito preguntar por dos parametros y aun no he podido hacerlo

  39. Hola Andres Rojas, gracias por tu ayuda, pero desafortunadamente ahora me presenta otro problema y es que al ejecutarlo me muestra lo siguiente: “masterC:\Documents and Settings\Administrador\Mis documentos\NetBeansProjects\Ejemplo_Reportes/src/reportes/contactos.jasper
    Mensaje de Error:null”. De igual manera gracias por tu interes y ayuda y no sobra decirte que cualquier ayuda mas te la gradezco..

  40. Alberto: Si no me equivoco; esos salen de los cuadros de texto o seleccion o variables que hayas declarado y que tengas en la clase, por ejemplo si el parametro fecha1 lo capturaste a traves de un cuadro de texto, la cosa seria asi:
    JTextField fecha = new JTextField();
    String fecha1 = fecha.getText(); Si parametro.put(…) lo tienes en otro metodo, tienes que enviarle como parametro al metodo donde este el metodo put(:::) la variable fecha1..

  41. Estimado Carlos Fenando, ese error está raro… Si deseas podrías postear tu email y con gusto te mandaría mi proyecto netbeans para ver si este también te presenta error y ver como podemos solucionarlo

  42. Hola, primero te felicito por el tutorial: luego quiero hacerte una consulta, al abrir el reporte creado hay tres pestañas: Designer, XML y Preview. Al hacer clic en Preview empieza a compilar y no me sale nada y se regresa a la pestaña Designer porque responderme es urgente. La prueba la estoy haciendo con sql

  43. Hola, tengo el mismo problema de carlos fernando pero no esta puesta una solucion, podrian ayudarme?
    Este es el error:
    Error cargando el reporte maestro: java.io.FileNotFoundException: C:\Ejemplo_Reportes\reportes\contactos.jasper
    Y probe cambiar el string por “String master = System.getProperty(”user.dir”) +
    “/src/reportes/contactos.jasper”;”
    Pero me da este error:
    masterC:\Ejemplo_Reportes/src/reportes/contactos.jasper
    Mensaje de Error:null

    Alguien tendria alguna solucion Por favor, Gracias

  44. Ola .. andres rojas deseria que me enviaras tu proyecto… para ver si presente ese error extraño que dice null
    este es mi correo te lo agradeceria bastante …
    adonis_9090@hotmail.com

  45. Hola gente, hermoso el tutorial, pero tengo un pequeño inconveniente… jamas puedo ver el reporte en tiempo de ejecucion, compila sin errores, pero cuando voy al preview se queda pensando con la leyenda “report1 (Generating report)

  46. No me dan una mano con eso?!??!! please!!!!

  47. alguien me pude dar una mano para iniciar un reporte con iReport. Segui las instrucciones de este codigo pero no me sale.
    Gracias

  48. Que tal, alguien me puede ayudar a generar un reporte dinámico?
    Lo que necesito es que desde Java yo le diga que columnas quiero que aparezcan en el reporte, tengo un reporte ya hecho pero siempre me muestra las 8 columnas que tengo, y quiero que al marcar varios CheckBox estos indique que columnas se van a mostrar

  49. Que tal, alguien me puede ayudar a generar un reporte dinámico?
    Lo que necesito es que desde Java yo le diga que columnas quiero que aparezcan en el reporte, tengo un reporte ya hecho pero siempre me muestra las 8 columnas que tengo, y quiero que al marcar varios CheckBox estos indique que columnas se van a mostrar
    E-Mail= cedav3000@gmail.com

  50. Mi estimado solo para felicitarte por compartir tus conocimientos
    con nosotros los apasioandos por el software libre
    sin duda me has sido de gran ayuda
    gracias por este tutorial

  51. Saludos, he generado el reporte dentro de netbeans sin problemas, pero cuando genero el .jar me muestra la pantalla, los datos pero cuando quiero generar el reporte no hace nada… no muestra ningun reporte, que falta…

    • Hola betsy, me podrias hacer el favor de decirme de que manera hiciste para que te funcionara en netbeans y además saber si ya solucionaste para que te funcionara con el . jar…..

      tambien te dejo mi e-mail umov@hotmail.com

      para que me puedas colaborar…

      gracias…

    • cuando genere el .jar quitar el dist

      String master = System.getProperty(“user.dir”) +
      “/dist/Reportes/reportProfesores.jasper”;

      y dejar solo

      String master = System.getProperty(“user.dir”) +
      “/Reportes/reportProfesores.jasper”;

  52. HOla, me parece q te falto poner de q manera se conecta… pues y no veo q le des la conexion al ireport, saludos

  53. Tengo un problemita ..
    Al ejecutar el reporte me envia un error
    Mensaje de Error:null
    pero el codigo esta identico al del ejemplo….
    Alguien podria decirme q es

  54. Hola a todos. Tengo un problema que espero q me ayuden a solucionarlo.

    Estoy desarrollando una aplicacion cliente-servidor, en el q tengo q generar reportes entre otras cosas.
    El problema esta en que quiero q el reporte se genere en el cliente mientras q los datos y demas se preparen en el servidor.

    Para la generacion de reportes uso Dynamic Jasper, por lo q esta dificil encontrar info sobre ese tema.
    Quisiera saber si ustedes saben como llegar a hacerlo.

    Desde ya muchas gracias.

Escribe un comentario