Tutorial Jasper Reports

download Tutorial Jasper Reports

of 10

Transcript of Tutorial Jasper Reports

SENA, Regional Valle CEAI, Centro de Electricidad y Automatizacin Industrial. Instructor Jonatan Velasco Actividad Reportes en NetBeans con JasperReports Curso ADSI 13

A partir de la versin 6.0 de NetBeans, realmente se aadieron herramientas y mejoras que fomentan la productividad, desde el ya incorporado con anterioridad, soporte para C/C++, ahora tambin para Ruby, SOA, UML. En el momento de actualizar este artculo la fecha en que se liber la versin 6.5 aun es muy reciente y de igual forma, trae importantes mejoras, por ejemplo el soporte para PHP, Python y Groovy.

iReport en NetBeans?Para los recien llegados al lenguaje Java, sobre todo aquellos provenientes de .NET seguramente ya se habrn preguntado si existe un Crystal Reports para Java! La respuesta es precisamente iReport. Pero iReport es solo un editor visual para generar los reportes por medio de la librera JasperReport, es decir, quien realmente hace los reportes es JasperReport, solo que al inicio, pues resultaba igualmente tedioso el escribir cdigo no solo Java, sino tambin XML. Por esta razn alguien pens en crear una herramienta con la cual se pudieran disear los reportes de manera visual haciendo uso de JasperReports, y es as como surgi iReport. Despus de todo esto, aun as para quienes usamos NetBeans como Entorno de Desarrollo quiz no era lo ms adecuado tener que usar dos herramientas por separado, sin embargo en Febrero del 2008 sali este plugin de iReport para NetBeans lo cul es una genial noticia para toda la comunidad Java. Una vez tengamos el plugin, para instalarlo basta abrir NetBeans 6.0 e ir al men Toolsplugins y en la pestaa de downloaded agregar el plugin de iReport. Con esto no tienen excusa los programadores de otros lenguajes que les ha pasado por la cabeza probar algo de Java pero por temor o mitos de que Java es muy difcil y complicado no lo han hecho. Se tiene a la mano herramientas libres como el IDE NetBeans que les permitir crear las GUI (Interfaces Grficas de Usuario) usando el Drag&Drop (arrastrar y soltar) al estilo Visual Basic y ahora con este nuevo plugin de iReport, podrn disear los reportes visuales de manera ms fcil!

Creacin de Reportes en JavaAhora que ya tenemos incorporado iReport en NetBeans, vamos a ver como generar un sencillo reporte.

HERRAMIENTAS UTILIZADAS

NetBeans 6.5 o superior 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

Connections/DataSourcesUna vez instalado el plugin y creada la BD, vamos a establecer la conexin 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 ide/modules/ext / En el men HerramientasOpciones buscamos en la parte superior un botn con el logo de iReport y le damos clic para posteriormente ir a la pestaa de CLASSPATH. Agregamos el fichero jar del driver y con esto ya podemos pasar a establecer la Conexin a la BD. Vamos al men Herramientas Report DataSources y pulsamos sobre el botn New para agregar una nueva conexin. Aparecer una ventana como la mostrada en la imagen.

Usaremos una conexin JDBC que es la que debemos usar para conectarnos a DBMS como MySQL, PosgreSQL, Oracle, entre otros ms, por lo cual seleccionaremos la segunda opcin NetBeans DataBase JDBC Connection. Posteriormente pasaremos a otra ventana en donde debemos seleccionar la conexin que previamente establecimos en NetBeans

Una vez guardados los cambios deberemos agregar un archivo visual para disear 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 diseador visual de iReport. Tendremos un rea dividida varias regiones, PageFooter, columnFooter, columnHeader, etc. Para este ejemplo, solo vamos a utilizar las regiones de title, pageHeader, columnHeader, detail y pageFooter, por lo cual deberemos ocultar las dems estableciendo un valor de 0. En uno de los paneles izquierdos que hay en NetBeans encontraremos algo como lo que muestra la siguiente imagen. Por lo tanto, deberemos seleccionar las regiones sobrantes y en el panel de propiedades que est en el lado derecho, debemos

establecer el valor de Band height a 0 y con esto notaremos que desaparecer dicha regin en el rea de diseo. Una vez hecho lo anterior, solo deberemos tener en el rea de diseo las 5 regiones mencionadas con anterioridad. Podemos observar que en el panel derecho tenemos una pequea paleta de componentes. Entre ellos el Static Text y Text Field. La diferencia entre ambos es que el Static Text es en s como su nombre lo dice, Texto Esttico, es decir, nos va servir para poner los rtulos y ttulos 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 diseo, primero vamos a establecer la consulta y a definir las variables necesarias. En el men FileReport query deberemos escribir la consulta SQL y observamos los campos que nos trae en la parte de abajo. En el panel de la izquierda de iReport, veremos que al desplegar la opcin de Fields, tendremos los campos que deseamos obtener con la consulta SQL. En este caso, tendremos name, telefono, email. Ahora ya estamos listos para disear el reporte. Ya comentaba que tenemos una pequea paleta con algunos componentes y mencionbamos la diferencia entre el Static Text y Text Field. Ahora, prosigue hacer el diseo, es decir, la presentacin visual de nuestro reporte. La regin details es la que contendr los datos que devuelva la consulta SQL, por lo tanto, es de suponerse que estos debern ser componentes Text Field y no Static Text. Para insertar los componentes, los seleccionamos del panel derecho presionando con el mouse y sin soltarlo, arrastramos al rea de diseo. Al igual que pasa con los controles SWING, al seleccionar un componente tenemos el panel de propiedades, as podemos modificar el color, tamao y tipo de fuente. Entendido esto, procedemos a realizar un diseo similar al mostrado por la figura:

Al agregar un Text Field distinto a los que nos trae la consulta a nuestra rea de diseo, observaremos que tienen el texto de $F{field} . Deberemos cambiar la palabra field que se encuentra dentro de las llaves y poner el nombre de los campos que nos devolver la consulta SQL. Si a estas alturas hay an algn despistado que no sabe de lo que hablo, me refiero a los campos de la consulta SQL que hicimos: SELECT name, telefono, email FROM contacts Y estos campos son los que encontraremos en el panel izquierdo al desplegar la opcin de Fields. Ahora bien, para asignar esos campos a los Text Fields, basta con dar doble click al Text Field y editarlo bien seleccionar el TextField y en el panel de propiedades ir a la propiedad Expression y ah cambiar el valor. Con esto, si hemos hecho todo correctamente, ya podemos tener una vista de nuestro reporte, as que podemos ir al men Designer y ejecutar el reporte con Run report. La figura muestra el resultado de ejecutar dicho reporte!

Ahora, como se observa en la figura, obtenemos un reporte en base a una consulta SELECT sin ninguna condicin WHERE. A menudo, en la realidad casi siempre los reportes sern bajo ciertos criterios, por ejemplo, en el caso ms sencillo de este ejemplo, desearamos mostrar los datos del contacto que tenga el id = 3. Para ello necesitamos agregar un parmetro. En el panel izquierdo, vamos a la opci n Parameters, click derecho, Add y escogemos parameters.

Le asignamos algn nombre a dicho parmetro. Posteriormente debemos modificar la consulta, si anteriormente tenamos: SELECT name, telefono, email FROM contacts Ahora solo agregaremos la clausula WHERE con el parmetro que acabamos de agregar: SELECT name, telefono, email FROM contacts WHERE id = $P{id} donde $P{ } indica que se trata de un parmetro. id es el nombre de este parm etro.

Por ltimo, para ver los resultados debemos establecer un valor por default. Esto se consigue seleccionando el parmetro y en el panel de propiedades establecer a Default Value el valor 1 del nmero de id que se quiera visualizar (poner el valor con comillas dobles). Con esto al ejecutar de nuevo el reporte, ya obtendremos un nuevo reporte bajo cierto criterio. Lo nico que falta ahora es crear el cdigo para poder llamar desde nuestra aplicacin Java al reporte, por ejemplo, que al dar click en un botn, el reporte se ejecute, ya sea que mande directo a impresin nos muestre la vista previa como en la figura de arriba. Si se percataron que al ejecutar el reporte desde la vista de diseo, automticamente se genero un archivo con el mismo nombre que el reporte pero bajo la extensin .jasper. Este archivo es el que deberemos mandar a llamar desde nuestra aplicacin java. Existen varias clases que nos servirn para ejecutar al reporte desde nuestra aplicacin, por ejemplo la clase JasperPrint, JasperReport, etc. Todas estas clases se encuentran en el paquete net.sf.jasperreports y dicho paquete est en la librera jasperreports-3.7.3.jar. Aqu hay algo importante que sealar, cuando se descarga el programa de iReport trae consigo mismo a la librera de JasperReport (recordemos que la que genera en si los reportes es JasperReport, iReport es solo la herramienta visual para disear los reportes y hace uso de JasperReport), adems tambin trae algunas otras libreras que son necesarias para poder ejecutar los reportes y adems algunas otras libreras que sern tiles por ejemplo cuando se desee generar reportes con grficos, histogramas, exportar a Excel, etc. Entonces, lo que se hace cuando se trabaja con el programa de iReport, es propiamente disear el reporte ah, una vez compilado, el archivo .jasper que nos genera lo copiamos a nuestra carpeta del proyecto, luego abrimos NetBeans, se escribe el cdigo pero obtendremos algunos errores pues NetBeans no sabr en que paquetes se encuentran las clases que arriba mencione (JasperPrint, JasperReport, etc.). Entonces lo que se hace es agregar la librera jasperreports-3.7.3.jar (panel izquierdo, click derecho en Libraries add Jar/Folder) y con esto ya no obtendremos errores. Ahora bien, no solo era necesario agregar esa librera, tambin es necesario agregar otras ms que se encuentran en la carpeta lib, que son:

bsh-2.x.x.jar itext-2.x.x.jar commons-digester-1.7.jar commons-collections-2.x.x.jar commons-login-1.x.x.jar commons-beanutils-1.8.0.jar commons-javaflow-20060411.jar

Tambin en nuestro cdigo debemos importar las libreras a utilizar y estas son: import java.util.HashMap; import java.util.Map; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.view.JasperViewer; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperCompileManager; Entonces, lo que deben hacer es copiar la carpeta JasperReport a C:\ a la carpeta de Java a algn otro lado donde ustedes deseen y entonces agregar todas las libreras de dicha carpeta al proyecto de NetBeans.

Al hacer esto, ya no obtendremos los errores y podremos ejecutar el reporte desde la aplicacin Java.

Para abrir el reporte, se debe generar a partir de un evento de botn, as que debes crear una interfaz y en el evento del botn debes:

Compilar el fichero .jrxmlPara compilar el fichero .jrxml y generar el fichero .jasper, desde cdigo podemos poner algo como estoJasperReport report = JasperCompileManager.compileReport("C:\\informes \\Informe.jrxml");

Rellenar el informe con datosAhora hay que rellenar el informe con datos. Desde cdigo se hace con algo como estoJasperPrint print = JasperFillManager.fillReport(report, new HashMap(), conn);

Donde conn es la conexin con la base de datos. No es necesario indicar el select ni nada similar, puesto que esta informacin est incluida en el .jrxml.

Obtener el pdfFinalmente, para obtener el fichero .pdf, la lnea es algo como estoJasperExportManager.exportReportToPdfFile(print, "C:\\informes\\PDF's\\informe.pdf");

Donde el parmetro es el fichero de salida que deseamos.

Mostrar el informe en una vista previaPara mostrar el pdf escribimos algo como esto:JasperViewer jviewer= new JasperViewer(print,false); jviewer.setTitle("Reporte de Prueba"); jviewer.setVisible(true);