Вы находитесь на странице: 1из 9

1

EjemplodeconsultaparametrizadaenIReportcon
Hibernate.

En el documento se explica cmo crear una consulta parametrizada utilizando HQL


dentrodeIReport,ycmosecargaelinformecompiladodesdeunprogramaJavapara
quepuedaservisualizado.
UtilizaremosparagenerarelinformelabasededatosdelaVideotecaquecontienelas
tablas:Gnero,PelculayDirector
CreacindelinformeenIReport
SiinstalaelIReportenunordenadorpersonal,enelsubdirectoriodeinstalacin\lib,
que por defecto est en la direccin: C: \ Ar chi vos de
pr ogr ama\ J asper Sof t \ i Repor t - 2. 0. 5\ l i b, debe borrar el archivo hsql db-
1. 7. 1. j ar ycopiarensulugarelarchivohsql db. j ar quevieneconladistribucinde
labasededatosHypersonic.

Para crear un informe que liste todas aquellas pelculas cuya fecha sea mayor que un
valordefechaquepasaremoscomoparmetros,debemosllevaracabolossiguientes
pasos.

1.Aadirelpathdelosarchivosdecorrespondenciaycrearuna
conexin.
ArranquelabasededatosydespusIReport.

1.aFijareldirectoriodecompilacindelosinformes.

Dentro de IReport seleccione Opci ones - > Opci ones, en la segunda pestaa de la
figura(Compi l ador )marquelacasillaUsar el di r ect or i o de i nf or mes par a l as
compi l aci ones, los archivos compilados (*.jasper) se almacenarn en el mismo
directorioquelosarchivosdediseodelinforme(*.jrxml).
.
Nota: En el laboratorio est
seleccionado por defecto un
subdirectorio de Archivos de
Programa, no podr compilarlos ya
que no tiene permisos de escritura.
Puede marcar la casilla comentada
anteriormente o bien desmarcarla y
con el botn explorar buscar un
directorioconpermisosdeescritura.

1.b.FijarelpathdelproyectoJava

EnelmenOpci ones - >


Local i zaci n de l as
cl asesdebeaadirel
directoriodondeseencuentra
elarchivodeconfiguracinde
Hibernate,losarchivosde
correspondenciayelcdigo
objeto.Aadalascarpetastal
comosemuestraenlafiguray
PulseaGuar dar
l ocal i zaci n.

ElproyectosellamaDemoMulticapaHibernate2yenelsubdirectoriosrcseencuentran
elarchivodeconfiguracinylosarchivosdecorrespondencia.

1.cCrearlaconexin.

EnelmenprincipalseleccioneDat os - > Conexi ones de Dat os.


EnelformularioresultantepulseelbotnNuevo par ,ymarquecomosemuestra
enlafiguraHi ber nar Conexi n

3
PulseelbotnPr xi moyenelnuevoformulariointroduzcaelnombredelabasede
datos,talcomosemuestraenlapartederechadelafiguraanterior.Pulseahora
Pr ueba,debeobtenerelmensaje:

2.Utilizarelasistentedeinformes.

En el men principal de IReport seleccione Fi cher o - > Mago de I nf or mes. En el


formulario de la figura seleccione la conexin (videoteca) y escriba la consulta HQL:
f r om Pel i cul a. El asistente no admite consultas parametrizadas, pero
posteriormentelamodificaremos.

Sialpulsarprximoelsistemamuestraelmensajedeerrorsiguiente,debecomprobar
silabasededatosestarracada,osielarchivohsqldb.jarseencuentraenel
subdirectoriolibdeIReport,obiensielpathdelasclasesestbien.

Enlasiguienteventanaseleccioneloscamposquevaautilizareneldiseodel
informe,talcomosemuestraenlafigura.

PulsePr xi moparapasaralasiguienteventana.

Enlafiguraanteriorelcampoidpeliculaesdetipoint.Hagadobleclicsobreintpara
pasaralformulario:

5
Entipodecamposeleccionej ava. l ang. I nt eger .Estaoperacindeberepetirlapara
todosaquelloscamposquenoseandeuntipoclase.

EnlafiguraanteriorpulsePr xi moyensiguienteformulariosincambiarnadatambin
Pr xi mo.Ahoraseleccionelaplantilladelinforme.

PulsePr xi moyenelsiguienteformularioTer mi nar .

3.Guardarelinformediseado
Para los informes diseados y para los compilados tenemos que elegir el directorio
dndesernalmacenados.SeleccioneenelmenprincipalFi cher o - > Sal var

Comoelarchivocompilado(*.jasper)sercargadoposteriormentedesdeunprograma
Java,puedecrearunsubdirectoriodentrodelsrcdelproyecto(porejemplodenombre
listados)yguardartantoelarchivodediseocomoposteriormenteelcompilado.

4.Modificarlaconsulta.

Comohemoscomentadoanteriormenteelasistentedeinformesnoadmiteconsultas
parametrizadas, pero podemos modificarlas utilizando la opcin del men principal:
Dat os - > Consul t a de I nf or me.
En el formulario desmarque la opcin: Recuperar campos automticamente y
sustituyalaconsultadelaventanapor:

Hemos utilizado un parmetro de nombre FECHA, que en la siguiente seccin


definiremos. IReport utiliza la siguiente sintaxis para referirse a los objetos de un
Report
Sintaxisparalosobjetosdeuninforme
Sintaxis Descripcin
$F{nombre_campo}
Especificaelnombredeuncampo(F=Field)
$V{nombre_variable}
Especificaelnombredeunavariable
$P{nombre_parametro}
Especificaelnombredelparmetro
7
$P!{nombre_parametro}
Sintaxisespecialparaindicarqueelparmetrono
debetratarsecomounvalorparasertransferidoa
unaconsulta(osentenciapreparada),debe
considerarseunfragmentodeunaconsulta.

Enlafiguraanteriorlaconsultatambinpodrahaberseescritodelaforma:
Fr omPel i cul a p wher e p. f echa < $P{FECHA}

Enelejemplodeldocumentolasdosconsultasproducenelmismoresultado.

5.Definirlosparmetros.

EnlaventanadeldocumentosobreParmetrosseleccionesconelbotnderechodel
ratnAdd Par amet er .
En la ventana resultante tenemos que definir
elnombreyeltipodelparmetro.Comoenla
basededatosalmacenamoslafechacomoun
nmero entero (nicamente guardamos el
ao), el parmetro se define tal como se
muestraenlapartesiguientefigura.

En la figura anterior, hemos introducido el nombre del parmetro (FECHA), el tipo de


datos (java.lang.Integer), el valor por defecto y hemos activado la casilla uso como
Aviso. Al ejecutar desde el diseador el informe nos pedir el valor del parmetro
fecha.

6.Compilaryejecutarelinformedesdeeldiseador.

SeleccioneenelmenprincipalConstruir>Compilar.Obtendrunresultadosimilaral
delasiguientefigura:
8

Los dos mensajes de advertencia de la figura anterior pueden ser eliminados si en


Opci ones - > Cami no de l as cl asesaadeelpathdelacarpetaNegocio,peroesto
notieneningnefectoenelinformegeneradoysepuededejarcomoest.

Paraejecutarelinformeutilice:Const r ui r - > Ej ecut ar I nf or me usando


conexi n act i va,leaparecerunaventanasimilaraladelafigura:

PuedeteclearelvalordeparmetroopulsarelbotnUsar def ect o,conunvalor


de1984yconlosdatosdelabasededatos,obtendruninformesimilaraldelafigura:

9
EjecutardesdeunprogramaJava
ParacargarelinformediseadoanteriormentedesdeunprogramaJava,tenemosque
cargarentiempodeejecucinelarchivocompilado(*.jasper).Elsiguientecdigo
visualizaelinforme.

private void r un( )


{
/ / Car gar el r epor t y vi sual i zar l o.
Sessi on Sesi on = null;
Sesi on = Ut i l i dadHi ber nat e. getSessionFactory( ) . openSessi on( ) ;
St r i ng r epor t Di r ect or y = " sr c\ \ l i st ados" ;
Map par amet er Map = new HashMap( ) ;

par amet er Map. put ( J RHi ber nat eQuer yExecut er Fact or y. PARAMETER_HIBERNATE_S
ESSION, Sesi on) ;
par amet er Map. put ( " FECHA" , 1984) ;
J asper Pr i nt r epor t = null;
try
{
Syst em. out. pr i nt l n( " Ll enando i nf or me. . . " ) ;
r epor t = J asper Fi l l Manager . fillReport( r epor t Di r ect or y +
" \ \ cl assi c. j asper " , par amet er Map) ;
J asper Vi ewer . viewReport( r epor t ) ;
Syst em. out. pr i nt l n( " Fi nal i zado. . " ) ;
}
catch ( J RExcept i on e)
{
e. pr i nt St ackTr ace( ) ;
}
}

El fragmento de cdigo anterior contiene las instrucciones para cargar el informe y


visualizarlo en tiempo de ejecucin. Con respecto al cdigo cabe comentar lo
siguiente:
Lasesinsecreautilizandolafactoradesesiones.
parameterMapcontienelosparmetrosdelaconsulta.
La instruccin parameterMap.put(FECHA,1984) asigna el valor al parmetro
delaconsulta
La variable r epor t Di r ect or y contiene el path del archivo compilado, el
archivosellama cl assi c. j asper .

Con respecto a las versiones utilizadas en el documento de IReport y JasperReports


son las ltimas (2.0.5), aunque el ejemplo se puede reproducir con versiones
anteriores

Вам также может понравиться