Conexin con Informes desde J! Una vez creados los informes con iReport, tendremos que acceder a ellos desde nuestra aplicacin Java. En esta hoja guiada veremos los pasos bsicos necesarios para mostrar un informe desde una aplicacin Java. ota! En esta hoja guiada se usar el informe creado en la hoja anterior, llamado serviciosagrupados. EJERCICIO GUIADO N" #. CREACI$N DE% INFORME COM&I%ADO 1. Entra en iReport " abra el informe serviciosagrupados #se encontrar en la carpeta $is %ocumentos& 'os ficheros que contienen un informe son ficheros del tipo .jr(ml. )s* pues, en la carpeta $is %ocumentos encontrar el fichero serviciosagrupados.jrxml, que es el que tiene que abrir. #ota! +i le echa un vistazo a la carpeta $is %ocumentos, ver tambi,n un fichero llamado serviciosagrupados.bak. Este fichero es simplemente una copia de seguridad que se crea automticamente al guardar el informe.& 2. -amos a ver el aspecto del informe. .ulse el botn! /a sabe que este botn, llamado Ejecutar informe (usando conexin activa), permite visualizar el informe relleno con los datos de la base de datos, seg0n la consulta +1' que ha"a usado. 3. +in embargo, este botn no solo sirve para visualizar el informe final, sino que adems act0a como compilador, generando un fichero del tipo .jasper. 'os ficheros .jasper son informes compilados, de forma que puedan ser usados en aplicaciones java. 2ada vez que ha visualizado un informe, ha generado sin darse cuenta un fichero .jasper, con el nombre del informe que estaba visualizando. En nuestro ejemplo, acabamos de generar un fichero serviciosagrupados.jasper 4. 'os ficheros .jasper generados se suelen almacenar dentro de la carpeta del programa iReport, sin embargo, nosotros configuraremos el programa iReport para que los ficheros compilados se almacenen directamente en la carpeta $is %ocumentos, de forma que est,n ms accesibles. .ara ello, active la opcin pciones ! pciones! ". En el cuadro de opciones que aparece active la pesta3a #ompilador. $. En el primer recuadro que aparece se tiene que indicar el directorio donde aparecern los ficheros compilados. .ara ello, pulse el botn Explorar " seleccione la carpeta %is &ocumentos. +i todo va bien, el resultado ser parecido al siguiente! '. .ulse el botn (rabar. ) partir de ahora cada vez que visualice un informe el fichero compilado se guardar en la carpeta $is %ocumentos. 'o vamos a comprobar. -uelva a visualizar su informe! ). )cuda a la carpeta %is &ocumentos " compruebe que en ella ha" ahora un fichero serviciosagrupados.jasper. Este es el fichero del informe compilado. Este fichero ser el que usar para visualizar informes desde java. EJERCICIO GUIADO N" '. CONE(I$N CON UN INFORME DESDE JAVA 1. Entra en et4eans " crea un nuevo pro"ecto Java. El pro"ecto se llamar *rueba+nformes " contendr un pa,ueteprincipal. Este paquete a su vez contendr una ventanaprincipal. 2. 2rea la carpeta 4ase dentro de la carpeta del pro"ecto " copia en ella la base de datos $)E$.+). 3. .repara tu pro"ecto para que pueda acceder a la base de datos $)E$.+) #"a sabes, crear el objeto cone(in, sentencia, etc...& 4. .ara que nuestro programa sea capaz de presentar informes, crearemos una carpeta llamada +nformes dentro de la carpeta del pro"ecto. / dentro de dicha carpeta copiaremos los ficheros .jasper de los informes que queremos utilizar. En nuestro caso, copiaremos el fichero serviciosagrupados.jasper que creamos en el apartado anterior. 2omo ve, es algo parecido a lo que hacemos con la base de datos. )s* pues crea la carpeta +nformes dentro de la carpeta de pro"ecto " copia el fichero serviciosagrupados.jasper dentro de ella. ". 2rea un botn en la ventana de tu pro"ecto. El botn contendr el te(to 56nforme )grupado7 " su nombre ser btn+nforme-grupado. $. El objetivo es hacer que aparezca el informe serviciosagrupados cuando se pulse este botn. .ara ello, programe lo siguiente en el action*erformed del botn! Este cdigo le muestra muchos errores, no se preocupe ahora de ellos. En los siguientes pasos se corregirn. %e momento lo que se va a hacer es e(plicar el cdigo de este evento! 'o primero que observar es como se usa una variable ruta6nforme para almacenar el camino del informe que queremos mostrar. 8bserva que dicho informe se especifica con el fichero .jasper generado con iReport, " que este fichero se encuentra dentro de la subcarpeta informes. ) continuacin viene una l*nea donde se crea un objeto informe del tipo .asper*rint! JasperPrint informe = JasperFillManager.fillReport(rutainforme,null,conexin); Esta l*nea es la que genera el informe que se va a mostrar. El informe en java es un objeto del tipo Jasper.rint " es creado a trav,s de otro objeto del tipo Jasper9ill$anager. Es interesante que observes el uso de un m,todo llamado fillReport #rellenar informe& que se encarga de rellenar el informe con datos. Este m,todo necesita tres parmetros! - El sitio donde se encuentra el fichero del informe. - 'os parmetros #ull en nuestro ejemplo. 'os parmetros se estudiarn en pr(imas hojas guiadas& - / el objeto cone(in, que le permite a java acceder a la base de datos para recoger los datos que se presentarn en el informe. Una vez creado el objeto informe, solo tenemos que presentarlo en pantalla. 'os informes se presentan a trav,s de un objeto del tipo Jasper-ie:er. 'os objetos Jasper-ie:er son ventanas donde se muestran los informes. JasperViewer entanaisor = new JasperViewer(informe,false); Esta l*nea de cdigo crea una ventana llamada ventanavisor donde se muestra el informe informe. El parmetro false indica que al cerrarse la ventana del informe no debe acabar el programa. +i este parmetro fuera true, al cerrar la ventana del informe se cerrar*a el programa entero #esto no interesa&. El objeto ventanavisor es una ventana normal " corriente " puede ser visualizada con set/isible. .or otro lado, se le asigna el t*tulo 56nforme de servicios7 con el m,todo set0itle. ;odo este cdigo debe estar rodeado de un tr"...catch para evitar errores inesperados. '. ;odos los errores del cdigo se producen debido a que es necesario indicar los imports correspondientes a las clases .asper*rint1 .asper2ill%anager1 .asper/ie3er que participan en el cdigo. Un import es una l*nea de cdigo que le dice a java en qu, librer*a debe encontrar la clase correspondiente. ormalmente, al hacer clic sobre la l*nea que da el error, aparece el icono de una bombilla peque3a en la parte izquierda de la ventana. )l hacer clic sobre esta bombilla se nos informa de la librer*a que hace falta importar. /a sabe que basta hacer clic sobre esta librer*a para que se a3ada la instruccin import correspondiente de forma automtica. +in embargo, si prueba esto mismo con las l*neas errneas del cdigo anterior, ver que no aparece ninguna bombilla. Esto es debido a que las librer*as donde se encuentran las clases .asper*rint1 .asper2ill%anager 4 .asper/ie3er no vienen incluidas en et4eans, "a que son clases pertenecientes al programa iReport. )s* pues, et4eans no sabe donde encontrar estas clases. ). .ara evitar este error, es necesario incluir en el pro"ecto una serie de librer*as propias del programa iReport. Esto se hace de la siguiente forma! 5. <aga clic con el botn derecho del ratn sobre el apartado 6ibliotecas de su pro"ecto " luego active la opcin -gregar arc7ivo .-89carpeta. 1:. %ebe acudir a la carpeta del programa iReport para buscar en ella las bibliotecas necesarias. 2oncretamente, la carpeta donde se encuentran estas bibliotecas es la siguiente! -rc7ivos de programa ! .asper;oft ! i8eport<2.:.1 ! lib 5. 'os ficheros que contienen las librer*as necesarias para este programa son lo siguientes! commons<collections<2.11 commons<logging<1.:.2 4 jasperreports<2.:.1 Empezaremos a3adiendo el fichero commons<collections<2.1. +eleccinelo " active )brir! )rchivos de programa = Jasper+oft = iReport>?.@.A = lib 1:. 8bservar que se ha agregado el fichero a la zona de bibliotecas! 11. Repita el proceso para agregar los otros dos ficheros necesarios. )l final, su zona de 4ibliotecas debe quedar as* #observe los tres ficheros a3adidos&! 12. Bracias a la inclusin de estos ficheros, nuestro pro"ecto "a dispone de las librer*as de clases que contienen a las clases que necesitamos, que recuerda que son! .asper*rint1 .asper2ill%anager1 .asper/ie3er +i ahora haces clic sobre la primera l*nea que da error, ver como ahora et4eans "a sabe el import que debe a3adirse, " por tanto aparecer la bombilla. .ulse sobre la bombilla! 13. ;iene que agregar el import para la clase Jasper9ill$anager! net.sf.!asperreports.engine.JasperFillManager 14. )hora agregue el import para la clase Jasper.rint! net.sf.!asperreports.engine.JasperPrint 1". / finalmente agregue el import para la clase Jasper-ie:er! net.sf.!asperreports.iew.JasperViewer 1$. 'os errores han desaparecido. /a puede ejecutar el programa. 1'. +i pulsa sobre el botn +nforme -grupado aparecer el informe. El informe aparece en una ventana #el visor de informes = objeto Jasper-ie:er& que tiene una peque3a barra de herramientas. En esta barra podr por ejemplo imprimir el informe, o cambiar su zoom, entre otras cosas! 1). ;al como se ha programado este botn, al pulsarse se visualiza el informe antes de que el usuario decida imprimirlo o no. En algunos casos, puede ser interesante que el informe se imprima directamente sin que se visualice antes. -eamos como hacer esto. .rimero a3ada otro botn btn+mprimir&irectamente a su ventana! 15. )hora programe dentro de ,l lo siguiente! -entana visor de informes #Jasper-ie:er& <erramientas! guardar, imprimir, zoom, etc... El cdigo es similar al anterior, solo que se elimina todo uso del objeto .asper/ie3er #ventana visualizadora& "a que el informe "a no debe salir en pantalla. )dems se a3ade una nueva l*nea! JasperPrintManager.printReport(informe,true); Esta l*nea usa un objeto llamado .asper*rint%anager que se encarga de imprimir el informe informe usando el m,todo print8eport. +i el segundo parmetro tiene el valor true, entonces significa que aparecer el cuadro de dilogo de impresin!
+i estuviera a false, este cuadro de dilogo no aparecer*a " el informe se enviar*a directamente a la impresora configurada por defecto en el ordenador. En nuestro caso, al tener el valor true, este cuadro s* aparecer. 2:. Ejecute el programa " pruebe el nuevo botn. o hace falta que imprima el informe. CONC%USI$N &r )oder im)rimir *n informe credo con iRe)or+ desde *n ),iccin J! es necesrio -re-r cier+s ,i.rer/s )er+enecien+es , )ro-rm iRe)or+0 commons-collections-2.1, commons-logging-1.0.2 y jasperreports-2.0.1 Un !e1 -re-ds es+s ,i.rer/s2 e, )roceso )r im)rimir *n informe es e, si-*ien+e0 - Crer *n o.3e+o de, +i)o Js)er&rin+ 4e, informe5 - Crer *n o.3e+o !isor 4Js)erVie6er5 7*e )ermi+ !is*,i1r e, informe. - O .ien im)rimir direc+men+e e, informe con *n o.3e+o Js)er&rin+Mn-er.