Você está na página 1de 13

EJERCICIO GUIADO. JAVA.

INFORMES DE BASE DE DATOS


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.

Você também pode gostar