IREPORT
Conexión a HSQL utilizando SQL.
Fechas en la base de datos
Los campos fecha en la base de datos se pueden almacenar de las siguientes formas:
Utilizando Date: Crea una fecha en formato largo, en la correspondiente clase Java y en el
archivo de correspondencia debe situar como tipo de datos java.util.Date.
Utilizando un String: Se almacena en el formato que decide el programador, por ejemplo
dd/mm/YYYY o dd‐mm‐YYYY.
Consultas en HQL con fechas
a) Si en la base de datos utilizamos el tipo Date para el campo fecha de Película y queremos consultar
las películas cuya fecha sea mayor que la fecha que pasamos como parámetro (siendo el parámetro de tipo String), podemos utilizar dentro de IReport la siguiente consulta de informe:
from Pelicula where fecha > CONVERT($P{FECHA}, Date)
Dentro del IReport se declara FECHA como parámetro de tipo String. La consulta anterior utiliza la
función Convert del gestor de base de datos HSQLDB, no está garantizado que funcione con otro gestor
de base de datos. Es mejor utilizar lo que se indica en el siguiente párrafo.
En cambio si en la consulta el parámetro se declara de tipo Date, la consulta debe reescribirse:
from Pelicula where fecha > $P{FECHA}
Si el usuario desde un programa Java introduce la fecha en formato dd/mm/yyyy, conviértalo a Date y
páselo como parámetro al Informe.
b) Si en la base de datos la fecha se almacena como un String, por ejemplo utilizando / para separar días
de meses y años (es decir en el formato habitual de España 14/06/2008). Una consulta para obtener un
listado de aquellas películas cuya fecha sea mayor que la que pasamos como parámetro toma la forma:
from Pelicula p where substring(p.fecha,7,4) || '/' ||
substring(p.fecha,4,2)|| '/' || substring(p.fecha,1,2) > $P{FECHA}
El parámetro FECHA se define de tipo String, obviamente el valor de FECHA que se pasa como
parámetro debe ir en la forma yyyy/mm/dd para que pueda establecerse la comparación entre Strings.
En el fragmento de código anterior || es el operador HQL de concatenación de Strings y substring(..) es
otra función HQL que permite extraer un substring. Para el caso de String también puede comprobarse si la fecha está vacía:
From Pelicula where fecha ‘’
Grupos y subinformes
Para la mayor parte de los listados del caso de estudio pueden utilizarse grupos o bien subinformes.
Aunque los subinformes se utilizan para mostrar relaciones maestro‐detalle (i.e. director ‐‐‐ película), en el informe maestro se listan los directores y en el subinforme las películas, el mismo resultado puede
obtenerse empleando grupos y un único informe. En el documento explicaremos las dos posibilidades
empleando el modelo relacional introducido anteriormente.
Grupos
Supongamos que queremos obtener un listado de los directores y las películas de cada uno de ellos,
agrupado por director. En HQL con la siguiente consulta se obtiene el listado. From Pelicula
Dentro de IReport seleccionamos los campos que queremos mostrar, tal como puede verse en la
siguiente figura.
Los campos a visualizar son el director, el idpelicula, el título y la fecha. Defina dentro del asistente de
informes un grupo con director. Para que el informe funcione de la forma esperada tiene que definir en “Estructura del documento”
directorHeader Group Properties Expresión de Grupo, la expresión que produce el cambio de
grupo, en este caso es el nombre del director. Sustituya la expresión por defecto $F{director} por:
$F{director}.getNombre() ...
Regístrate para leer el documento completo.