Manual de IReport v10.1.0.0

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 104

Manual de IReport

NDICE
Captulo 1. Introduccin ............................................................................................................... 4
Captulo 2. Primeros pasos ........................................................................................................... 5
2.1 Requisitos de la plataforma ............................................................................................... 5
2.2 Instalacin ........................................................................................................................... 5
2.3 Creacin de una conexin JDBC ......................................................................................... 7
2.4 Creacin de su primer reporte ......................................................................................... 10
Captulo 3. Estructura del reporte ............................................................................................. 15
3.1. Bandas.............................................................................................................................. 15
3.2. Campos ............................................................................................................................ 18
3.2.1 Registro de los campos desde una consulta ............................................................. 18
3.2.2 Acceso al Diseador de consultas ............................................................................. 19
3.2.3 Campos y campos de texto ....................................................................................... 20
3.3. Trabajo con elementos .................................................................................................... 21
3.3.1 Gestin de Elementos con el Inspector de Reporte ................................................. 23
3.3.2 Herramientas de formato.......................................................................................... 24
3.3.3 Propiedades bsicas de un elemento ....................................................................... 26
3.4 Trabajar con grupos .......................................................................................................... 28
3.4.1 Otras Opciones de grupo ........................................................................................... 36
3.5 Trabajo con parmetros ................................................................................................... 38
3.5.1 Usar parmetros en una consulta ............................................................................. 40
3.6 Trabajo con variables ....................................................................................................... 41
3.7 Expresiones ....................................................................................................................... 44
3.7.1 El tipo de una expresin ............................................................................................ 44
3.7.2 Operadores de expresiones y mtodos del objeto .................................................. 44
3.7.3 El uso de un If- Else Construir en una expresin ...................................................... 46
Captulo 4. Estilos ....................................................................................................................... 48
4.1 Trabajo con estilos............................................................................................................ 48
4.2 Creacin de Condiciones de Estilo ................................................................................... 50
4.3 Creacin de una nueva plantilla....................................................................................... 53
4.3 Instalacin y Uso de la nueva plantilla ............................................................................ 54
Captulo 5. Subreportes .............................................................................................................. 58
5.1 Creacin de un subreporte ............................................................................................... 58

5.1.1 Vincular un subreporte al reporte padre .................................................................. 59


5.1.2 Especificacin del subreporte ................................................................................... 60
5.1.3 Especificacin del origen de datos ............................................................................ 61
5.1.4 Paso de Parmetros................................................................................................... 62
5.2 Un ejemplo paso a paso ................................................................................................... 63
5.3 Retornando valores desde un subreporte ....................................................................... 71
5.4 Uso del Asistente de Subreporte ..................................................................................... 74
5.4.1 Crear un nuevo reporte mediante el Asistente de Subreporte ............................... 75
5.4.2 Especificacin de un reporte existente en el Asistente de Subreporte ................... 77
Captulo 6. Grficos .................................................................................................................... 81
6.1 Creacin de un grfico simple .......................................................................................... 81
6.2 Valor hipervnculos ........................................................................................................... 87
Captulo 7. Tablas Cruzadas........................................................................................................ 88
7.1 Uso del Asistente de tablas de referencias cruzadas ...................................................... 88
7.2 Trabajar con columnas, filas y Medidas........................................................................... 93
7.2.1 Modificando las celdas .............................................................................................. 97
7.2.2 Comprendiendo las Medidas .................................................................................... 97
7.3 Modificacin de las Propiedades de una tabla de referencias cruzadas ........................ 99
7.4 Parmetros en las tablas de referencias cruzadas ........................................................ 100
7.5 Trabajar con los datos de las tablas de referencias cruzadas ....................................... 100
7.6 Uso de las variables totales en las tablas de referencias cruzadas............................... 101

Captulo 1. Introduccin
IReport es una herramienta de edicin de cdigo abierto que puede crear informes complejos a
partir de cualquier tipo de aplicacin Java a travs de la biblioteca JasperReports. Est escrito en
Java 100% puro y se distribuye con el cdigo fuente de acuerdo con la Licencia Pblica General
GNU.
A travs de una interfaz grfica intuitiva y rica, iReport permite crear rpidamente cualquier tipo
de reporte con mucha facilidad. IReport permite a los ingenieros que estn aprendiendo esta
tecnologa acceder a todas las funciones de JasperReports, as como ayudando a los usuarios
expertos a ahorrar un montn de tiempo en el desarrollo de informes muy elaborados.
Para la versin 5.0, iReport fue casi completamente reescrito, con la nueva aplicacin basada en
la plataforma NetBeans. A pesar de que en la interfaz de usuario aparece ms o menos lo mismo,
un nuevo diseo completo del ncleo de iReport y el uso de la plataforma NetBeans nos
permitir crear rpidamente nuevas caractersticas , lo que hace an ms fcil iReport de
aprender y usar. Con esta Gua aprender cmo agregar caractersticas visuales y analticas para
informes complejos con tablas, imgenes y subreportes

Captulo 2. Primeros pasos


2.1 Requisitos de la plataforma
IReport necesita el Sun Java 2 SDK para funcionar, versin 1.5 o ms reciente.
En cuanto a hardware, al igual que todos los programas Java, iReport no consume mucha
memoria RAM, por lo que es necesario contar con al menos 256 MB de memoria
disponibles, as como unos 50 MB de espacio libre en disco.
nota: Con el fin de evitar problemas con el selector de archivos en iReport, los usuarios de
Windows Vista deben tener Java 1.5.0_17-b04 o posterior instalado y los Usuarios de Windows
7 deben tener Java 1.6.0_18-b03 o 1.7.0- b74.

2.2 Instalacin

Figura2-1: Instalacin-paso 1

Para instalar iReport, haga doble clic en ireport-windows.exe para que aparezca la pantalla que
se muestra en la Figura 2-1.

Figura2-2: Instalacin-paso 2

Haga clic en Siguiente y siga las instrucciones del asistente hasta que se complete la instalacin
(Figura 2-3).

Figura2-3: Instalacin- ltimo paso

Despus de la instalacin, habr un nuevo elemento de men en el men Programas (Inicio


Programas Jaspersoft iReport Designer).

El programa de instalacin crea un acceso directo para iniciar iReport, que une el acceso directo
a iReport.exe (presente en el directorio /bin en el Directorio raz de Jaspersoft).

2.3 Creacin de una conexin JDBC


Para crear una nueva conexin:
1. seleccionar el icono
que se encuentra en la barra de herramienta y una nueva ventana
aparecer para la configuracin de la nueva conexin (ver Figura 2-4).

Figura2-4: Seleccin del Tipo de fuente de datos

2. Seleccionar Conexin JDBC a la Base de Datos y clic en siguiente

Figura2-5: Conexin JDBC mediante un controlador JDBC incorporado

3. En la ventana de Conexin JDBC a la Base de datos escriba el nombre que desea darle a la
conexin (ejemplo, Mi nueva conexin) y seleccione el controlador JDBC y complete la url
con la direccin ip, puerto y nombre de la base de datos.
4. Para completar la configuracin de la conexin, escriba el nombre de usuario y contrasea
para acceder a la base de datos. Si desea guardar la contrasea, active la casilla de
verificacin Almacenar contrasea.
Recomendamos que pruebe la configuracin de conexin antes de seguir adelante, que se
puede hacer haciendo clic en el botn Probar.
iReport ofrece el controlador JDBC para los siguientes sistemas de bases de datos compatibles
con SQL:

HSQL
MySQL
PostgreSQL

Si iReport devuelve un error de ClassNotFound, es posible que no haya un archivo JAR en la


ruta de clase que contenga el controlador de la base de datos seleccionado. En este caso, hay
dos opciones:

Agregar el JAR necesario en la ruta de clases de iReport. Para acceder a la ruta de clases
de iReport, seleccione en el men Herramientas/Opciones, vaya a la pestaa ruta de
clases, y agrege el JAR a la lista de rutas.
Registrar el nuevo controlador a travs de la ventana de servicio. Si prefiere esta
segunda manera, abra la ventana de los servicios (Ventana/ Prestaciones o CTRL +5),
seleccione el nodo Controladores.
Haga clic derecho en el nodo Controladores y seleccione Nuevo controlador. El dilogo
que se muestra en la Figura 2-6 se abrir.

Figura2-6: Controlador Oracle cargado desde un JAR externo

Luego de este paso vuelva a seleccionar el botn Probar de la Figura 2-5 e iReport
localiza automticamente el archivo JAR necesario y carga el controlador del mismo.

2.4 Creacin de su primer reporte


1. Haga clic en Archivo Nuevo. Esto carga un asistente (Figura 2-7) para la creacin paso
a paso de un reporte, a partir de la seleccin de la plantilla seguida por la seleccin del
nombre y la ubicacin del nuevo informe.

Figura2-7: Asistente de informes - Seleccin de plantilla

2. Seleccione la plantilla y haga clic en Abrir el Asistente de reporte para proceder a la creacin
de informes. (Puede crear un reporte sencillo que duplica la plantilla seleccionada con slo hacer
clic en Abrir esta plantilla. Sin embargo, vamos a utilizar el asistente para este ejemplo.

Figura2-8: Asistente de informes - Nuevo Informe Nombre y ubicacin

3. En el tercer paso, seleccione la conexin JDBC que hemos configurado en el paso


anterior. El asistente detectar que estamos trabajando con una conexin que permite
el uso de consultas SQL y le pedir en un rea de texto especificar una consulta SQL
(Figura 2-9). Esta consulta se puede disear visualmente haciendo clic en diseo de
consulta; luego se explicara cmo trabajar con este diseador

Figura2-9: Asistente de informes - Consultas SQL

4. Haga clic en Siguiente. La clusula de "orden" es importante para la siguiente eleccin


del orden de clasificacin (voy a hablar de los detalles un poco ms tarde).
iReport lee los campos de la tabla direcciones y los presenta en la siguiente pantalla del
asistente, como se muestra en Figura 2-10.

Figura2-10: Asistente de informes - Campos de seleccin

5. Seleccione los campos que desea incluir y haga clic en Siguiente.


6. Ahora que ha seleccionado el campo para poner en el reporte, se le pedir que elija los
campos que se utilizar para la clasificacin, cualquiera (ver Figura 2-11).
Mediante el asistente, puede crear hasta cuatro grupos. Puede definir ms campos
despus. (De hecho, es posible establecer un nmero arbitrario de grupos.)

Figura2-11: Asistente de informes - Agrupamiento

7. En este primer informe, se define una agrupacin simple por el campo CITY, como se
muestra en la Figura 2-11.
8. Cuando haya terminado, haga clic en Siguiente.
9. Aparecer la ltima pantalla del asistente, y se le informar el resultado de la operacin.
Haga clic en Finalizar para crear el reporte, que aparecer en el rea central del iReport,
listo para ser generado, como se muestra a continuacin.

Figura2-12: Ventana principal Vista previa del diseo del reporte

10. Haga clic en el botn Vista previa para ver el resultado final.
Al hacer clic en Vista previa, iReport compila el informe, lo que genera el archivo JASPER y
ejecuta el reporte con el origen de datos especificado. Usted puede seguir el progreso en la
ventana de salida, que est por debajo de la ventana principal. Si por alguna razn, la
ejecucin falla, se puede ver una serie de problemas en la ventana problemas del reporte, y
otra de errores en la ventana salida iReport.
En este ejemplo, todo debera funcionar bien, y usted debera ver el informe en la vista
previa como se muestra arriba (Figura 2-12).
Tambin tenga en cuenta:

Usted puede guardar el reporte haciendo clic en el icono


en la barra de
herramientas de la ventana. iReport puede guardar los informes en varios formatos,
incluyendo PDF y HTML.
Para exportar automticamente el reporte en un formato determinado y ejecutar la
aplicacin de visor apropiado , seleccione un formato en el men Vista previa

Captulo 3. Estructura del reporte


En este captulo vamos a analizar la estructura del reporte y la organizacin de un reporte.
Vamos a ver las partes que lo componen y cmo se comportan en relacin con los datos de
entrada como iReport crea un reporte de salida. Este captulo tiene las siguientes secciones:

Bandas
Trabajar con bandas
Resumen

3.1. Bandas
Un reporte se define por medio de una pgina. Esta pgina est dividida en diferentes partes
horizontales denominadas bandas. Cuando el reporte se une con los datos para ejecutar la
impresin, estas secciones se imprimen muchas veces de acuerdo a su funcin (y de acuerdo
con las reglas que el autor del reporte, ha puesto en marcha). Por ejemplo, el encabezado de
pgina se repite en el inicio de cada pgina, mientras que la Banda de detalle se repite para cada
registro elaborado.
La Figura 3-1 muestra una pgina dividida en los nueve principales grupos predefinidos a los que
se agregan nuevos grupos. De hecho, iReport gestiona una banda de ttulo (Cabecera de grupo)
y una banda de recapitulacin (Pie de Grupo) para cada grupo. Las bandas Detalle, Cabecera de
grupo y Pie de grupo se pueden dividir adems en varias bandas, por lo que pueden tener Detalle
1, Detalle 2, y as sucesivamente.
Una banda es siempre tan ancho como la anchura de la pgina utilizable (esto es, excluyendo
los mrgenes derecho e izquierdo). Sin embargo, su altura, incluso si se establece durante la
fase de diseo, puede variar durante la creacin de impresin de acuerdo con los elementos que
contiene; se puede alargar hacia la parte inferior de la pgina de forma arbitraria. Esto suele
ocurrir cuando las bandas contienen subreportes o campos de texto que tienen que
adaptarse al contenido. Generalmente, la altura especificada por el usuario debe considerar la
altura mnima de la banda. No todas las bandas pueden cambiar el tamao de acuerdo con el
contenido, en particular, el Pie de Columna y el Pie de pgina.
En general, la suma de todas las alturas de la banda (excepto para el fondo) siempre tiene que
ser menor o igual a la altura de la pgina menos los mrgenes superior e inferior. Esta regla es
mucho ms complicado, de hecho, hay varios casos y opciones diferentes que deben tenerse en
cuenta; por ejemplo, la banda de Ttulo se puede imprimir en una pgina diferente, el Pie de
pgina y el Pie de la ltima pgina pueden tener diferentes tamaos y no se consideran en
conjunto, y as sucesivamente. Para su comodidad, el mximo tamao de banda permitido se
calcula dinmicamente en tiempo de diseo, lo cual evita que el usuario de altura para las
bandas no vlidas (lo que llevara a un error de verificacin del esquema en tiempo de
compilacin).

Figura 3-1: Bandas predefinidas de un reporte.

La siguiente es una lista de las bandas predefinidas:


Ttulo
El ttulo es la primera banda visible. Se crea una sola vez y se puede imprimir en una
pgina separada. En cuanto a las dimensiones definidas, no es posible durante el
tiempo de diseo a sobrepasar la altura de la pgina de reporte (mrgenes superior e inferior
estn incluidos). Si el ttulo se imprime en una pgina aparte, esta altura la banda no est
incluido en el clculo de la suma total de todos los alturas de la banda, que tiene que ser menor
o igual a la altura de la pgina.
Cabecera de pgina
Esta banda le permite definir un encabezado en la parte superior de la pgina. La altura
especificada durante la fase de diseo por lo general no cambia durante el proceso de creacin
(excepto para la insercin de componentes verticalmente re - considerables, tales como campos
de texto que contienen texto largo y subreportes). El encabezado de pgina aparece en todas
las pginas impresas en la misma posicin definida durante la fase de diseo. Las bandas Ttulo
y Resumen no incluyen el encabezado de pgina cuando se imprimen en una pgina aparte.

Cabecera de Columna
Esta banda se imprime al principio de cada columna detalle. (La columna concepto se explicar
en la seccin " Columnas " ms adelante en este captulo). Normalmente, las etiquetas que
contienen los nombres de las columnas del reporte de tabla se insertan en esta banda.
Cabecera de grupo
Una banda de grupo puede contener cero o ms bandas de grupo, que permitan la recogida de
registros de detalles en grupos reales. Un encabezado de grupo siempre se acompaa de una
Pie de Grupo (ambos pueden ser independientemente visible o no). Diferentes propiedades
estn asociados con cada grupo. Ellos determinar su comportamiento desde el punto de vista
grfico. Es posible forzar siempre un grupo encabezado en una pgina nueva o en una nueva
columna y para imprimir esta banda en todas las pginas, si las bandas
por debajo de ella se desborde la pgina nica (como un encabezado de pgina, pero a nivel de
grupo). Es posible fijar una altura mnima necesaria para imprimir un encabezado de grupo; si
es superior a esta altura, la cabecera de grupo se imprimir en una pgina nueva. Acerca de las
bandas Grupo Encabezado y pie de grupo, que se pueden dividir en varios grupos, obteniendo
un conjunto arbitrario de los encabezados de grupo y unos pies de pgina.
Cuando esto sucede, las bandas se enumeran a partir de 1. (Se hablar de grupos en mayor
detalle ms adelante en este captulo).
Detalle
Una banda de detalle corresponde a cada registro que se lee por la fuente de dato. Con toda
probabilidad, la mayora de los elementos de impresin se pondr aqu. Un reporte puede tener
varias bandas de detalle; en otras palabras, la banda de detalle se puede dividir en un conjunto
de sub-bandas, aunque por defecto un reporte slo tiene una banda de detalle.
Pie de grupo
El Pie de grupo completa un grupo. Por lo general, contiene campos para ver los subtotales o
elementos grficos de separacin, tales como lneas. Al igual que el detalle y las bandas de
encabezado de grupo, la Banda Pie de grupo se puede dividir en varias bandas.
Pie de Columna
La banda Pie Columna aparece al final de cada columna. Sus dimensiones no son ajustable en
tiempo de ejecucin (ni siquiera si contena elementos re- considerables tales como reportes
integrados o campos de texto con un nmero variable de lneas de texto).
Pie de pgina
El pie de pgina aparece en todas las pginas donde hay un encabezado de pgina. Al igual que
la banda de Pie de Columna, no es redimensionable en tiempo de ejecucin.

Pie de ltima pgina


Si quieres sacar el pie de pgina en la ltima pgina del reporte diferente de los otros
pies de pgina, utiliza la banda Pie de ltima pgina. Si la altura de la banda es 0, se ignora y el
diseo establecido para la pgina comn se utilizar tambin para la ltima pgina.
Resumen
La banda Resumen le permite insertar campos relativos a los clculos totales, significados, o
lo que quieras insertar al final del reporte. En otros sistemas, esta banda es a menudo
llamada Pie de reporte.

Fondo
La banda de fondo permite crear marcas de agua y efectos similares (como un marco alrededor
de toda la pgina). Puede tener una altura mxima igual a la altura de la pgina y su contenido
aparecer en todas las pginas sin ser influenciado por el contenido de la pgina definido en las
otras bandas.
No datos
Esta es una seccin de reporte opcional que se imprime slo si la fuente de datos no devuelva
ningn registro y la propiedad Cuando no hay datos se establece en Ninguna seccin de
datos. Esta banda ser impreso en lugar de todas las otras bandas, la altura puede ser la misma
que la pgina del reporte, con exclusin de los mrgenes.

3.2. Campos
3.2.1 Registro de los campos desde una consulta
La manera ms comn para llenar un reporte es mediante una consulta. IReport ofrece varias
herramientas, incluyendo un diseador de consultas, y una manera de recuperar
automticamente y registrar los campos derivados de una consulta en el reporte.

Figura 3-2: Botn para abrir el diseador

Puede abrir el dilogo de consulta haciendo clic en el cono de cilindros en la barra de


herramientas de diseo (Figura 3-2).

Antes de abrir el dilogo de consulta, sin embargo, prestar atencin a la conexin/fuente de


datos activa (el elemento seleccionado en el combo situado en la barra de herramientas
principal). Todas las operaciones realizadas por las herramientas en el cuadro de dilogo de la
consulta utilizan esa fuente de datos, de modo que debe asegurarse que seleccione la fuente de
datos correcta.
IReport no necesita definir una consulta con el fin de generar un informe. De hecho, iReport
podra obtener registros de datos a partir de la informacin de una fuente que no est definida
por la consulta en ejecucin. En cualquier caso, aqu es donde se definen. El idioma de la consulta
puede ser una de los elementos que se enumeran en el combo en la parte superior del cuadro
de dilogo de consulta:

SQL
HQL
EJBQL
XPath
MDX (tanto la versin estndar y encapsulados XMLA )

Vamos a centrarnos en SQL. Si la fuente de datos seleccionada es una conexin JDBC, iReport
pondr a prueba la conexin de acceso al origen de datos como se define en la consulta. Esto le
permite a iReport identificar los campos usando los metadatos de consulta en el conjunto de
resultados. Para cada campo, iReport determina el nombre y el tipo de Java especificado para
ese campo por el controlador JDBC.
Una consulta que tiene acceso a una o ms tablas que contienen una gran cantidad de datos
puede requerir un largo retraso mientras el iReport explora la fuente de datos para descubrir
los nombres de los campo. Cuando haya completado la consulta automticamente se cargarn
los campos y se mostrarn en el nodo correspondiente en el Inspector de Reporte.
En caso de un error durante la ejecucin de la consulta (debido a un error de sintaxis o de una
conexin de base de datos no disponible), se mostrar un mensaje de error. La exploracin de
los campos puede devolver un gran nmero de nombres de campo si se trabaja con tablas
complejas. Le sugiero que revise la lista de nombres descubiertos y quitar los campos que no
piensa utilizar en su informe, a fin de reducir complejidad innecesaria. Usted puede Tambin
eliminarlos posteriormente en la vista de esquema, pero es una buena idea en este punto del
proceso de diseo para eliminar cualquier nombre de campo que usted no va a utilizar.

3.2.2 Acceso al Diseador de consultas


IReport ofrece un sencillo diseador de consultas visual para ayudarle a crear consultas sencillas
sin necesidad de conocer un determinado idioma. Puede acceder a la herramienta haciendo clic
en el botn Diseador de consultas (una conexin JDBC debe estar activa y el
idioma seleccionado de la consulta debe ser SQL).

Este diseador de consultas, proporciona una manera muy fcil e intuitiva para crear
consultas (ver Figura 3-3). Para crear una consulta necesita arrastrar las tablas necesarias en el
panel principal. Marque los campos que va a necesitar. El diseador permite definir
combinaciones de tabla. Para unir dos tablas, arrastre el campo de una tabla sobre el campo de
otra. Para modificar el tipo de join haga clic en el cuadrado rojo en el centro de la lnea del join.
Para agregar una condicin, haga clic en el nodo CONDICIONES del rbol de la consulta. Para
agregar un campo a los nodos de GRUPOS y ORDENADOS POR, haga clic en un campo en el
nodo CAMPOS SELECCIONADOS.

Figura 3-3: Diseador de consultas

3.2.3 Campos y campos de texto


Para imprimir un campo en un campo de texto, tendr que establecer la expresin y el tipo de
clase
del
campo
de
texto
correctamente.
Para crear un campo de texto correspondiente, arrastre el campo que desea mostrar de la vista
Inspector de Reporte en el panel de diseo. IReport crear un nuevo campo de texto con la
expresin correcta (por ejemplo, $ F {nombre de campo}) y asigne el nombre correcto de la clase
correcto.

3.3. Trabajo con elementos


Los elementos se presentan en una paleta, que normalmente se encuentra en la parte superior
derecha de la ventana principal (vase la figura 3-4).

Figura 3-4: Paleta de elementos

Para insertar un elemento en un reporte, arrastre el elemento de la paleta en una banda del
reporte. El nuevo elemento se crear con un tamao estndar y aparecer en el Inspector de
Reportes. Para seleccionar el elemento, haga clic en el diseador o en el Inspector de Reporte.
Puede ajustar la posicin del elemento arrastrndolo y para modificar su tamao, seleccione y
arrastre una esquina del marco de seleccin naranja. Al arrastrar o cambiar el tamao de un
elemento, iReport sugiere lugares para alinearlo, en base a los elementos que ya estn en el
panel de diseo, los lmites de la banda, y (si existe) directrices.
Para obtener una mayor precisin en el movimiento, utilice las teclas de flecha para mover el
elemento de un pxel a la vez; de manera similar, usando las teclas de flecha mientras presiona
la tecla Mayscula mueve el elemento 10 pxeles. Si necesita puntos de referencia para
posicionar y alinear los elementos en la pgina, se puede activar la cuadrcula en el panel de
diseo seleccionando la opcin del men VerReport Designer Mostrar cuadrcula.
Para obligar a los elementos a ajustarse a la cuadrcula, seleccione VerReport Designer
Ajustar a la cuadrcula.
Usted puede arrastrar y cambiar la posicin de una lnea gua en cualquier momento; esto no
tendr ningn efecto sobre la posicin del elemento. Para eliminar una lnea gua, arrastre hasta
la esquina superior /izquierda del panel de diseo.
Si desea mover un elemento de su banda inicial a otra banda o un marco, o viceversa, arrastre
el nodo del elemento en el Inspector de Reporte para la nueva banda (o marco).

En la ventana del diseador, puede arrastrar un elemento de una banda a otra banda, pero la
banda padre del elemento no cambiar. Como hemos dicho que un elemento debe estar
contenido en su banda, hay varias excepciones a esta regla. IReport le permite mover un
elemento en cualquier parte del reporte sin cambiar o actualizar la banda de los padres.
Como regla general, un elemento debe permanecer en la banda del padre; no se debe mover,
incluso parcialmente, fuera de la banda. Un error de diseo se mostrar en la Ventana
Problemas del Reporte y el este no se ejecutar. En la Figura 3-5 tenemos un elemento de texto
que tiene el ttulo como la banda padre. Dado que el elemento se extiende hasta la banda
Cabecera de pgina, una advertencia sobre la posicin de elemento no vlida aparece en la
Ventana Problemas del Reporte.

Figura 3-5: Error de diseo en la ventana de Problemas del Reporte

Puede utilizar la hoja de propiedades para editar un elemento; por lo general se encuentra en
el lado derecho de la ventana del diseador. La hoja de propiedades no slo se utiliza para los
elementos; se puede utilizar para editar las propiedades de todos los componentes que
conforman el reporte, incluyendo el formato de pgina, las opciones de banda, parmetros,
variables y opciones de los campos, y as sucesivamente. Cuando se selecciona algo en
el diseador o en la vista Inspector del reporte, la hoja de propiedades muestra las opciones
para el objeto seleccionado.

Figura 3-6: Hoja de propiedades para un elemento

Alternativamente, es posible seleccionar ms de un elemento a la vez, manteniendo pulsada la


tecla Mayscula y haciendo clic en todos los elementos deseados. Al especificar un valor para
una propiedad particular, se aplica ese valor a todos los elementos seleccionados. No obstante,
si dos o ms elementos estn seleccionados, slo sus propiedades comunes se muestran en la
hoja de propiedades. Si los valores de las propiedades son diferentes, los campos de valor estar
en blanco (por lo general el campo se muestra vaco). Para editar las propiedades nicas de un
elemento, seleccione slo ese elemento.

3.3.1 Gestin de Elementos con el Inspector de Reporte


El Inspector de Reporte muestra la estructura del reporte completo. El nodo raz representa la
pgina; puede seleccionarlo para modificar todas las propiedades del reporte general, como
hemos visto en el captulo anterior. Los siguientes nodos se utilizan para el estilo, los
parmetros, los campos y las variables y otros objetos de reporte.
Despus de estos nodos estn las bandas. Cada banda contiene los elementos. Los elementos
contenedores como marcos) pueden tener otros elementos representados como subnodos. El
orden de los elementos en el Inspector es importante porque es z-orden (la posicin desde el
punto de vista de la profundidad). En otras palabras, si un elemento precede a otros elementos
en la vista Inspector, este ser impreso delante de ellos.
Por favor, tenga en cuenta que algunos exportadores (como el exportador HTML) no son
compatibles con los elementos superpuestos, por lo que se omiten durante la compilacin; en
otras ocasiones se pueden tener dos o ms elementos superpuestos e imprimir slo uno de
ellos, utilizando la propiedad Imprimir cuando; este es un truco sencillo para imprimir diferentes
contenidos basados en una condicin.

Para cambiar el z-orden, puede mover los elementos arrastrndolos en el Inspector de Reporte,
o puede usar los elementos del men Mover Arriba y Mover Abajo. Recuerde que los elementos
en la parte superior de la lista se imprimen en primer lugar, por lo que para llevar un elemento
a la parte delantera, es necesario moverlo hacia abajo en la lista.
Todos los elementos se pueden copiar y pegar, a excepcin de los grficos y tablas de referencias
cruzadas. Cuando se pega un elemento, se mantienen las coordenadas superior /izquierda
utilizadas en su contenedor anterior (una banda, una celda o un marco). Si el nuevo contenedor
es menor que el anterior, puede ser necesario ajustar la posicin del elemento, ya que podra
estar fuera de los lmites del nuevo contenedor.
El Inspector de Reporte le permite seleccionar elementos dentro del reporte, incluso si estos
elementos no son visibles en el diseador o incluso si son difciles de seleccionar debido a la
complejidad del reporte.

3.3.2 Herramientas de formato

Figura 3-7: Herramientas de formato para un elemento de texto

Para organizar mejor los elementos de la ventana del diseador, se proporciona un conjunto
completo de herramientas. Para tener acceso al formato seleccione Ventana Herramientas
de Formato. Aparecer la vista de herramientas. Cada herramienta se activa slo cuando la

seleccin cumpla sus requisitos mnimos (seleccin simple o mltiple).


En la Tabla 3-1 se enumeran las herramientas disponibles, especificando qu tipo de seleccin
cada herramienta requiere (seleccin simple o mltiple) y explicando brevemente la funcin de
cada herramienta.
Tabla 3-1 Herramientas de formato
Icono

Herramienta

Descripcin

Alinear izquierda

Alinea los lados izquierdos al elemento primario.

Seleccin
Mltiple

Alinear a la derecha

Alinea los lados derechos al elemento primario.

Alinear arriba

Alinea los lados superior (o la parte superior) al elemento primario.

Alinear abajo

Alinea los lados inferiores al elemento primario.

Alinear eje vertical

Centra horizontalmente los elementos seleccionados de acuerdo con


el elemento primario.
Centra verticalmente los elementos seleccionados de acuerdo con el
elemento primario.
Establece el valor superior a 0.

Alinear
eje
horizontal
Alinear a la banda
superior
Alinear a la banda
inferior
Mismo ancho
Mismo ancho (max)
Mismo ancho (min)
Mismo alto
Mismo alto (max)
Mismo alto (min)
Mismo tamao
Centrar
horizontalmente
(basado-banda)
Centrar
verticalmente
(basado- banda)
Centrar en la banda

Pone los elementos lo ms posible a la banda superior de acuerdo a


la banda a la que pertenece.
Establece los elementos seleccionados en un igual a la del elemento
primario.
Establece los elementos seleccionados en un acho igual a la del
elemento ms ancho.
Establece los elementos seleccionados en un ancho igual a la del
elemento ms estrecho.
Indica la altura de los elementos seleccionado igual a la del elemento
primario.
Establece la altura de los elementos de seleccionada igual a la del
elemento ms alto.
Establece la altura de los elementos de seleccionada igual a la del
elemento ms bajo.
Establece la dimensin elementos seleccionados a la del elemento
primario
Coloca horizontalmente los elementos seleccionados en el centro de
la banda

Coloca verticalmente los elementos seleccionados en el centro de la


banda
Coloca los elementos en el centro de la banda

Centrar en el fondo

Pone los elementos en el centro de la pgina en el fondo

Unir a los lados


izquierdo
Unir a los lados
derecho

Se une horizontalmente los elementos movindolos a la izquierda

Se une horizontalmente los elementos movindolos hacia la derecha

Icono

Herramienta

Descripcin

Espacio Horiz.
Marcar igual
Espacio Horiz.
Aumentar
Espacio Horiz.
Disminuir
Espacio Horiz.
Eliminar
Espacio Vert.
Marca igual
Espacio Vert.
Aumentar
Espacio Vert.
Disminuir
Espacio Vert.
Eliminar
Adaptarse al padre

Distribuye igualmente el espacio horizontal entre elementos

Adaptarse al ancho
del padre
Adaptarse al alto de
los padres
Organizar como una
tabla

Seleccin
Mltiple

Aumenta en 5 pxeles el espacio horizontal entre los elementos


movindolos a la derecha
Disminuye por 5 pxeles el espacio horizontal entre los elementos
movindolos a la izquierda
Elimina el espacio horizontal entre elementos movindolos a la
izquierda
Distribuye igualmente el espacio vertical entre elementos

Aumenta en 5 pxeles el espacio vertical entre los elementos


(movindolos hacia la derecha)
Disminuye por 5 pxeles el espacio vertical entre los elementos
movindolos a la izquierda
Elimina el espacio vertical entre elementos movindolos a la
izquierda
Aumenta el tamao del elemento para que se ajuste al tamao de su
contenedor (una banda, una celda o un marco)
Aumenta el ancho del elemento a la anchura de su contenedor (un
banda, una celda o un marco)
Aumenta la altura del elemento para adaptarse a la altura de su
contenedor (una banda, una celda o un marco)
Alinea los elementos seleccionados por la parte de arriba y hace igual
el espacio horizontal entre ellos

3.3.3 Propiedades bsicas de un elemento


Todos los elementos tienen un conjunto de propiedades o atributos comunes; que se presentan
en la vista de propiedades de los elementos (como se muestra anteriormente en la Figura 3-6).
Estos atributos se refieren a la informacin sobre el la posicin del elemento en la pgina. En la
siguiente tabla describe los atributos disponibles.
Figura 3-8 muestra cmo iReport posiciona un elemento con respecto a la banda a la que
pertenece (o, ms ampliamente, a su contenedor). El ancho de banda es siempre igual al ancho
de pgina del documento menos los mrgenes izquierdo y derecho; su altura puede
cambiar en funcin del tipo de banda y los elementos que contiene.

Figura 3-8 Posicionando elemento

Tabla 3-2 Propiedades de posicin de un Elemento


Top
Left
Width

Esta es la distancia de la esquina superior izquierda del elemento de la parte superior del
contenedor al que pertenece el elemento.
Esta es la distancia de la esquina superior derecha del elemento desde el margen izquierdo del
contenedor.
Esta es el ancho del elemento.

Height

Esta es la altura del elemento; en realidad, esto indica un valor mnimo que puede aumentar
durante la creacin de impresin de acuerdo con el valor de los otros atributos.
* Coordenadas y dimensiones se expresan siempre en pxeles en relacin con una resolucin de 72 pxeles por
pulgada.

Tabla 3-3 Otras Propiedades


Primer plano
Fondo
Opaco
Estilo
Clave

Tipo de Posicin

FixRelativeToTop
Float
FixRelativeToBottom
Tipo de Estiramiento
NoStretch
RelativeToBandHeight

RelativeToTallestObject

Imprimir valores repetidos


Retire la lnea cuando en
blanco

Este es el color con el que se imprimen los elementos de texto y las lneas y las
esquinas de los elementos se dibujan.
Este es el color con el que el elemento de fondo se llena. Dado que, por defecto,
algunos elementos son transparentes, no olvide hacer el elemento opaco.
Esta opcin controla si el elemento fondo es transparente o no; la transparencia
implica slo las partes que deben ser llenados con el fondo.
Si el usuario ha definido uno o ms estilos en el informe, es posible aplicar un estilo
al elemento seleccionndolo de la lista.
Es el nombre del elemento, que tiene que ser nico en el informe (iReport lo propone
automticamente), y es utilizado por los programas que necesitan para modificar
las propiedades de los campos en tiempo de ejecucin.
Esta opcin determina los mejores coordenadas tienen que ser considerados si la
banda cambia su altura durante el proceso de llenado. Los tres valores posibles son
los siguientes:
Este es el tipo de posicin de pre-definido; los valores de las coordenadas nunca
cambian.
El elemento es empujado progresivamente hacia la parte inferior por los elementos
anteriores que aumentan su altura.
La distancia del elemento de la parte inferior de la banda se mantiene constante;
en general este se utiliza para las lneas que separan los registros.
Este atributo define la forma de calcular la altura de los elementos durante la
elaboracin de impresin; los tres valores posibles son los siguientes:
Este es el tipo de estiramiento pre-definido, y que dicta que la altura de los
elementos debe ser mantenido igual.
La altura del elemento se incrementa proporcionalmente con el tamao cada vez
mayor de la banda; este es til para las lneas verticales que simulan bordes de la
tabla.
El elemento modifica su altura de acuerdo con la deformacin del elemento ms
cercano: Esta opcin tambin se utiliza con grupo de elementos, que es un
mecanismo de grupo de elementos no gestionado por iReport.
Esta opcin determina si se debe imprimir el elemento cuando su valor es igual al
que se utiliz en el registro anterior.
Esta opcin quita el espacio vertical ocupado por un objeto si el objeto no es visible;
la visibilidad elemento se determina por el valor de la expresin contenida en el
atributo Imprimir cuando expresin o en el caso de campos de texto por
el atributo Blanco cuando nulo. Piense en la pgina como una cuadrcula donde
se colocan los elementos, con una lnea siendo el espacio que el elemento ocupa. La
figura a continuacin destaca el elemento de una lnea; a fin de eliminar esta lnea

, todos los elementos que comparten una parte de la lnea tienen que estar nulo (es
decir , que no se imprimirn)

Imprimir en primer banda


entera
Imprimir cuando detalle
desbordamientos

.
Esta opcin asegura que un elemento se imprime en la siguiente pgina o columna
si la banda desborda la pgina o columna; este tipo de garanta es til cuando el
atributo Imprimir valores repetidos est habilitado.
Esta opcin imprime el elemento en la siguiente pgina o columna, si la totalidad
de la banda no es imprimible en la presente pgina o columna.

Imprimir cuando el grupo


cambie

En este cuadro combinado, se presentan todos los grupos del reporte. Si se


selecciona uno de ellos, el elemento ser impreso slo cuando la expresin asociado
con el grupo cambia, es decir, cuando se crea una nueva ruptura del grupo
seleccionado.

Imprimir cuando expresin

Esto es una expresin como las que se describen en la seccin 3.7, y tiene que
devolver un objeto booleano. Adems de ser asociado con los elementos, esta
expresin se asocia con la bandas. Si la expresin devuelve true, el elemento est
oculto. Una expresin vaco o un valor nulo identifica implcitamente una expresin
como nuevo Boolean (true), que imprimir el elemento incondicionalmente.
Estos son un conjunto de pares de clave/valor que se pueden definir para cada
elemento.

Propiedades de expresiones

3.4 Trabajar con grupos


Los grupos permiten organizar los registros de un reporte con el fin de crear algunas estructuras.
Un grupo se define a travs de una expresin. JasperReports evala esta expresin as: un nuevo
grupo empieza cuando el valor de la expresin cambia. Una expresin puede ser representada
slo por un campo especfico (es decir, es posible que desee agrupar un conjunto de contactos
por ciudad o pas), pero puede ser ms complejo. Por ejemplo, es posible que desee agrupar un
conjunto de nombres de contactos por letra inicial.

Figura 3-9 Bandas de grupos

Cada grupo puede tener una o ms bandas de encabezado y una o ms bandas de pie de pgina.
Los encabezados y pies de grupo se imprimen justo antes y despus de la banda de detalle.
Puede definir un nmero arbitrario de grupos (es decir, se puede tener un grupo de primer nivel
que contiene contactos por pas y un grupo anidado que contiene los contactos en cada pas por
la ciudad).

El orden de los grupos en el Inspector de reporte determina el orden de anidacin de los grupos.
El orden de grupo se puede cambiar haciendo clic derecho sobre el nodo del grupo (encabezado
o pie de pgina) y seleccionar el elemento Mover Grupo hacia arriba o Mover Grupo hacia abajo
del men (vase la Figura 3-10).

Figura 3-10 Cambiando el orden de los grupos

Los registros de Grupos de JasperReports son mediante la evaluacin de la expresin del grupo.
Cada vez que cambia el valor de la expresin, se crea una nueva instancia del grupo. El motor
no realiza ningn registro de clasificacin si no se solicita de forma explcita, por lo que siempre
cuando definan los grupos se debe prever la clasificacin. Por ejemplo, si queremos agrupar un
conjunto de direcciones por pas, tenemos que ordenar los registros antes de ejecutar el
informe. Podemos utilizar una consulta SQL con una clusula ORDER BY.
Vamos a ver cmo trabajar con los grupos en un ejemplo. Supongamos que tiene una lista de
personas. Quiere crear un reporte donde los nombres de las personas se agrupen por lastname primero como en un directorio telefnico? Ejecutar iReport y abrir un nuevo informe. A
continuacin, tomar los datos de una base de datos mediante una consulta SQL con la clusula
ORDER BY (vamos a utilizar la base de datos de ejemplo proporcionado por JasperReports).
Para este ejemplo, utilice la siguiente consulta SQL:
SELECT * FROM ADDRESS ORDER BY LASTNAME, FIRSTNAME

Los registros seleccionados se ordenarn primero por el apellido y despus por el nombre de
los clientes. Los campos seleccionados por la consulta debe ser ID, FIRSTNAME, LASTNAME,
STREET y CITY.

Figura 3-11 Arrastrando los campos hacia la nada de detalles

Antes de continuar con la creacin de su grupo, asegrese de que todo funciona correctamente
mediante la insercin en la banda detalle los campos FIRSTNAME, STREET y CITY (moverlos
desde la vista de esquema para la banda de detalle, como se muestra en la Figura 3-11).
A continuacin, cree un diseo similar al propuesto en la Figura 3-12 y la vista previa del informe.

Figura 3-12 Layout antes de aadir los grupos

El resultado debe ser similar al de la Figura 3-13.

Figura 3-13 Las direcciones no agrupadas

Aqu solo tenemos un reporte plano simple que muestra una lista ordenada de direcciones.
Vamos a proceder a agrupar los registros por la primera letra del apellido. La primera letra se
puede extraer con una simple expresin (tanto en Groovy como en JavaScript).
Aqu est:
$F{LASTNAME}.charAt(0)

Si utiliza Groovy o JavaScript como se sugiere, recuerde poner en las propiedades del documento
Para agregar el nuevo grupo en el informe, seleccione el nodo raz del documento en la vista de
esquema y seleccione en el men Agregar Grupo al reporte (Figura 3-14).

Figura 3-14 Aadir grupo al reporte

Esto abre un sencillo asistente (Figura 3-15). Se usa para establecer el nombre del grupo (es
decir, Primera_Letra) y aadir la expresin que se extrae de la primera letra en un String.

Figura 3-15 Primer paso del asistente de nuevo grupo

En el segundo paso (Figura 3-16) se tiene la opcin de crear encabezado y pie de bandas para el
grupo. Seleccione ambos y haga clic en Terminar para completar la creacin del grupo

Figura 3-15 Segundo paso del asistente de nuevo grupo

Las nuevas dos bandas (cabecera de grupo y pie de grupo) aparecer en la ventana de diseo, y
los nodos correspondientes sern aadidos a la estructura del reporte en la vista de esquema
(Figura 3-16).

Figura 3-16 Las nuevas bandas de grupo en el panel de diseo

Cuando se agrega un grupo al documento, iReport crea una instancia en la variable


<nombre_grupo> _COUNT para el nuevo grupo. En nuestro caso, la variable se denomina
Primera_Letra_COUNT (Figura 3-17). La cual representa el nmero de registros procesados para
el grupo; si mostramos esta variable en un campo de texto en el pie de grupo, se mostrar el
nmero de registros que contiene el grupo.

Figura 3-17 El grupo en la vista de esquema

Ahora podemos aadir algo de contenido al encabezado y al pie de pgina del grupo. En
particular, podemos aadir la letra inicial a la que el grupo se refiere, y podemos aadir en el pie
de pgina la variable Primera_Letra_COUNT. Para poner la letra, slo tiene que aadir un campo
de texto en el encabezado del grupo y utilizar la misma expresin de campo de texto como lo
hizo para el grupo. La clase del campo de texto se puede ajustar a String (porque estamos usando
Groovy o JavaScript). Si utiliza Java, la expresin para el campo de texto se debe cambiar un
poco; ya que la funcin charAt () devuelve un char, podemos convertir este valor en un String,
concatenando con un String vaco. (Esto es en realidad una manera sucia, pero fcil de lanzar
cualquier objeto Java en una cadena sin comprobar si el objeto es nulo). As la expresin en Java
debe ser:
+$F{LASTNAME}.charAt(0)

Figura 3-18 Layout Final

El campo azul (en el pie de grupo) muestra la variable Primera_Letra_COUNT que hemos creado
arrastrando esta variable de la vista de esquema a la banda Pie de grupo. Si queremos mostrar
el mismo valor en el encabezado de grupo, tenemos que cambiar al campo de texto el tiempo
de evaluacin del grupo y establecer el grupo de evaluacin para Primera_Letra.
La Figura 3-19 muestra el informe final generado.

Figura 3-19 El resultado Final

3.4.1 Otras Opciones de grupo


En el ejemplo anterior, hemos aprendido cmo crear un grupo mediante el asistente de grupo,
ponemos el nombre del grupo, y la expresin de grupo. Hay muchas otras opciones que se
pueden establecer para controlar cmo se muestra un grupo. Mediante la seleccin de una
banda de grupo en la vista de esquema (encabezado o pie), en la hoja de propiedades, ver
todas estas opciones (Figura 3-20):

Figura 3-20 opciones de grupo

Expresin de Grupo
Esta es la expresin que JasperReports evaluarn contra cada registro. Cundo
la expresin cambie de valor, se crea un nuevo grupo. Si esta expresin es
vaco, es igual a muy, y desde una expresin nula nunca va a cambiar el valor, el resultado es
solo un encabezado de grupo y un solo pie de grupo, respectivamente, despus de la primera
cabecera de la columna y antes del ltimo pie de pgina de la columna.
Comenzar en una nueva columna
Si se selecciona esta opcin, se fuerza un salto de columna al final del grupo (es decir, a
el inicio de un nuevo grupo); Si en el reporte hay slo una columna, entonces, un salto de
columna se convierte en un salto de pgina.
Comenzar en una nueva pgina
Si se selecciona esta opcin, se fuerza un salto de pgina al final del grupo (es decir, a
el inicio de un nuevo grupo).
Restablecer Nmero de pgina
Esta opcin restablece el nmero de pginas en el comienzo de un nuevo grupo.

Reimprimir cabecera
Si se selecciona esta opcin, se imprime la banda Encabezado de grupo en todas las pginas
sobre las que el contenido del grupo se imprime (si el contenido requiere ms de una pgina
para el reporte impreso).
Altura mnima para comenzar una Nueva pgina
Si el valor es distinto de 0, JasperReports empieza a imprimir este grupo en una nueva
pgina si el espacio restante de la pgina actual es menor que el mnimo especificado.
Esta opcin se utiliza por lo general para evitar la divisin de una seccin de un reporte

compuesto por campos que queremos que estn juntos (como un ttulo seguido del texto de un
prrafo).

Posicin del pie de pgina


Esta opcin controla dnde colocar las bandas de pie de pgina. Por defecto se colocan
justo despus del final del grupo (sin dejar ningn espacio antes de la anterior
banda). Este comportamiento se puede modificar, las opciones disponibles son:
Apilar en la parte inferior: el pie de grupo se representa en la parte inferior de la pgina actual,
a condicin de que un grupo interno que tiene este valor obligara a los pies de grupo exteriores
a apilarse en la parte inferior de la pgina actual, independientemente del ajuste de pie de grupo
exterior.
Forzar en la parte inferior: el pie de grupo se representa en la parte inferior de la pgina actual,
a condicin de que un grupo interno que tiene este valor hara que su pie de pgina derecho
este en el parte inferior de la pgina, lo que obliga a los pies de grupo externo a estar en la
pgina siguiente.
Intercalar en la parte inferior: el pie de grupo se representa en la parte inferior de la pgina
actual, a condicin de que los pies de pgina exteriores tengan una opcin de visualizacin de
pie de pgina similar a estar al final de la pgina, porque de lo contrario, no pueden ser obligados
a cambiar su comportamiento en modo alguno.
Mantener juntos
Este indicador se utiliza para evitar que el grupo este dividido en dos pginas o columnas, pero
solo la primera vez q se intente separar.

3.5 Trabajo con parmetros


Los parmetros son los valores que normalmente se pasan al reporte desde la aplicacin que
originalmente solicit. Pueden ser utilizados para configurar las caractersticas de un reporte
particular durante la generacin de informes (por ejemplo, el valor a utilizar para una condicin
en una consulta) y por presentar informacin adicional al reporte que no se aplican bien por la
fuente de datos (por ejemplo, un ttulo personalizado para el informe, una ruta especfica de la
aplicacin para buscar imgenes, o incluso un objeto ms complejo como una imagen).
Al igual que con otros objetos de informe, los parmetros deben tener un tipo de clase y deben
ser declarados en el diseo del reporte (ver Figura 3-21). El tipo de los parmetros puede ser
arbitrario, pero el nombre del parmetro debe ser nico.

Figura 3-21: Propiedades de un parmetro

La propiedad Cambiar valor al cargar no se utiliza directamente por JasperReports. Es una


bandera especial para el parmetro que puede ser utilizado por aplicaciones externas; puede
examinar el modelo de reporte para descubrir lo parmetros que debe utilizar para solicitar
entrada.
La Expresin de valor predeterminado permite establecer un valor predefinido para el
parmetro. Se utilizar este valor si no se proporciona valor al parmetro desde la aplicacin
que ejecuta el informe. El tipo de valor debe coincidir con el tipo declarado en Clase del
Parmetro. En esta expresin no es posible utilizar campos y/o variables, ya que el valor del
parmetro se debe establecer antes de buscar el primer registro del origen de datos.
Usted puede definir legalmente otro parmetro como el valor de Expresin de valor
predeterminado, pero este mtodo requiere un cuidadoso diseo del reporte. IReport analiza
los parmetros en el mismo orden en el que son declarados, por lo que un parmetro de valor
por defecto debe ser declarado ante del parmetro actual. Me doy cuenta de que esto suena un
poco complicado, pero puede ser til emplear un parmetro que depende de otro, sobre todo
si queremos procesarlo.
En la siguiente seccin veremos cmo utilizar un parmetro en una consulta para especificar no
slo el valor de un parmetro, sino una parte o incluso toda la consulta. Esto le permitir crear
dinmicamente una consulta de entrada-dependiente para ser almacenados en un parmetro.
La propiedad Descripcin es otro atributo que no es utilizado directamente por JasperReports,
pero al igual que el Cambiar valor al cargar, se puede pasar desde una aplicacin externa.
Por ltimo, al igual que con los campos, puede especificar pares de tipo nombre /valor como
propiedades de cada parmetro. Esto es slo una manera de agregar informacin extra para el
parmetro, informacin que ser utilizada por aplicaciones externas Por ejemplo, el diseador
puede usar propiedades para incluir la descripcin del parmetro en diferentes idiomas, o quizs
aadir instrucciones sobre el formato de la entrada.

3.5.1 Usar parmetros en una consulta


Generalmente, los parmetros pueden ser utilizados en la consulta asociada con un reporte
incluso si no todos los idiomas los apoyan. En este captulo nos centraremos en el uso de
parmetros en las consultas, que es probablemente el tipo ms comn de consulta.
Supongamos que tenemos un reporte que muestra informacin acerca de un cliente. Cuando
generamos el reporte tendramos que especificar el ID del cliente para mostrar. Con el fin de
obtener datos sobre el cliente le tenemos que pasar esta informacin a la consulta; es decir,
queremos filtrar la consulta para obtener slo los datos relevantes para un ID de cliente en
particular. La consulta se vera as:
select * from clients where CUSTOMERID = $ P {miClienteId}
miClienteId es un parmetro, y la sintaxis para usar un parmetro en la consulta es la misma
que se utiliza cuando se hace referencia a un parmetro en una expresin. Sin entrar en
demasiada profundidad sobre cmo los parmetros trabajan en SQL, vamos a decir que
JasperReports interpretarn esta consulta como:
select * from clients where CustomerID = ?
El signo de interrogacin es el smbolo cannico en SQL que dice aqu va un valor proporcionado
a la instruccin SQL antes de la ejecucin de la consulta. Esto es exactamente lo que
JasperReports har: se ejecutar la consulta, pasando el valor de cada parmetro
utilizado en la consulta a la instruccin SQL.
Este enfoque tiene una gran ventaja con respecto a la concatenacin del valor del parmetro en
la cadena de consulta - que usted no tiene que preocuparse por caracteres especiales o
desinfectar su parmetro, ya que la base de datos lo har por usted. Al mismo tiempo, este
mtodo pone lmites en el control que se tiene sobre la estructura de la consulta. Por ejemplo,
no puede especificar una parte de una consulta con un parmetro (por ejemplo, el
almacenamiento de toda la clusula WHERE o GROUP BY). La solucin es utilizar esta sintaxis
especial:
$P! {<nombre_parmetro>}
Tenga en cuenta el signo de exclamacin despus de $P. El signo de exclamacin notifica a
JasperReports que no enlace el parmetro a un parmetro SQL (usando el signo de interrogacin
(?) como en el caso anterior), sino ms bien calcular el valor del parmetro y evaluarlo como una
subseccin de una consulta. Por ejemplo, si usted tiene un parmetro denominado MyWhere
con el valor de where CUSTOMERID = 5, la consulta:
select * from clients $P! {CUSTOMERID}
se transformar en:

select * from clientes where CUSTOMERID = 5


Sin necesidad de utilizar la lgica del parmetro de SQL. El inconveniente es que tienes que estar
100 porciento seguro de que el valor del parmetro es correcto a fin de evitar un error durante
la ejecucin de la consulta.

3.6 Trabajo con variables


Las variables son objetos que se utilizan para almacenar los resultados de los clculos, como
subtotales, sumas, etc. Una vez ms, al igual que con los campos y parmetros, debe definir el
tipo Java de una variable cuando se declara. Para aadir una nueva variable, seleccione el nodo
de las variables en la vista de esquema y seleccione el elemento de men Agregar variable.

Figura 3-22: Propiedades de una variable

Nombre
Este es el nombre de la variable. El nombre debe ser nico (es decir, no se puede tener
dos variables con el mismo nombre). Al igual que en los campos y los parmetros, se hace
referencia a una variable utilizando la siguiente sintaxis en una expresin:
$V {<nombreDeVariable>}
Clase Variable
Este es el tipo de Java de la variable. En el cuadro combinado, se puede ver algunas de las ms
tipos comunes como java.lang.String y java.lang.Double.
Clculo
Este es el tipo de un clculo predefinido utilizado para almacenar el resultado en la variable.
Cuando el valor predefinido es Ninguno, que significa "no realiza ningn clculo
automticamente. " JasperReports realiza el clculo especificado cambiando el valor de la
variable para cada nuevo registro que se lee de la fuente de datos.
Realizar un clculo de una variable significa evaluar su expresin (definida en el Propiedad
Expresin de Variable). Si el tipo de clculo es Ninguno, JasperReports le asignar a la

variable el valor que el resulte de la evaluacin de la expresin de la variable. Si el tipo de clculo


es distinto de Ninguno, el resultado de la expresin representar un nuevo valor de entrada
para el clculo elegido, y el valor de la variable ser el resultado de este clculo. Los tipos de
clculo se muestran en la Tabla 3-4.
Tabla 3-4 Tipos de clculo para las variables
Tipo
Definicin
Cuenta distintos
Suma
Promedio

Esta cuenta el nmero de los diferentes resultados de la expresin; el orden de la


expresin de evaluacin no importa.
Esto suma a cada iteracin el valor de expresin para el valor actual de la variable.

Menor

Calcula la media aritmtica de todas las expresiones recibidas en la entrada. Desde el


punto de vista del desarrollador, declarar una variable de tipo System es muy parecido
a declarar una variable en un programa, sin tener que usarlo. Alguien va a establecer
un valor para ella. Este "alguien" es por lo general un scriptlet ligado al informe o algn
otro cdigo Java que se ejecuta a travs de una expresin.
Esto devuelve el valor de la expresin ms baja recibida en la entrada.

Mayor
Desviacin Estndar

Esto devuelve el valor de la expresin ms alta recibida en la entrada.


Esto devuelve la desviacin estndar de todas las expresiones recibidas en la entrada.

Varianza

Esto devuelve la varianza de todas las expresiones recibidas en la entrada.

System *

Esto no hace ningn clculo, y la expresin no se evala. En este caso, el motor de


informes mantiene slo el ltimo valor establecido de esta variable en la memoria.
Este tipo especifica cuando un valor de la variable tiene que ser reajustada al valor
inicial (o nulo si ninguna expresin de valor inicial se ha proporcionado). El concepto de
restablecimiento de variable es fundamental cuando se quiere hacer clculos de grupo,
como los subtotales o promedios. Cuando un grupo cambia, debe restablecer el valor
de la variable y reiniciar el clculo. Los tipos de restablecimiento se enumeran en la
Tabla 3-5.

Restablecer tipo

Tabla 3-5 Restablecer tipos


Tipo de restablecimiento

Descripcin

Ninguno

La expresin de valor inicial se ignora.

Reporte

La variable se inicializa una sola vez al inicio de la creacin de informes mediante el


uso de la expresin de valor inicial.

Pgina

La variable se inicializa de nuevo en cada nueva pgina.

Columna

La variable se inicializa de nuevo en cada nueva columna (o en cada pgina si el


informe est compuesto de una sola columna).
La variable se inicializa de nuevo en cada nuevo grupo ( el grupo especificado en el
atributo Restablecer Grupo)
Especifica el grupo que determina qu variable reajustarn cuando el tipo de
restablecimiento Grupo est seleccionado.

Grupo
Restablecer Grupo

Tipo de restablecimiento

Descripcin

Tipo de Incremento

Esto especifica cuando un valor de la variable tiene que ser evaluado. De forma
predeterminada, una variable es actualizada cada vez que un registro se va a buscar
al origen de datos, pero a veces el clculo que queremos llevar a cabo debe realizarse
slo en ciertos momentos. El incremento tipos son los mismos que los tipos de clculo
enumerados en la Tabla 3-4.
Para aclarar el uso del tipo de incremento un poco, considere este ejemplo: contar
con un informe con una lista de nombres ordenados alfabticamente y agrupadas por
la primera letra, tenemos el grupo para la letra A que contiene una cierta cantidad de
nombres, el grupo B y as sucesivamente a la Z. Supongamos que queremos calcular
con una variable el nmero medio de nombres para cada carta. Tenemos que crear
una variable que realiza un clculo de la media de la cantidad o registros presentes
en cada grupo. Para realizar correctamente este clculo, la variable debe actualizarse
slo cuando la primera letra de los nombres cambia, lo que ocurre al final de cada
grupo. En este caso, el tipo de incremento debe ser Grupo
Especifica el grupo que determina el incremento de la variable si el tipo de incremento
Grupo es seleccionado
Este es el nombre de una clase Java que implementa la interfaz
JRIncrementerFactory, que es til para la definicin de operaciones tales como
la suma de tipos no numricos. En otras palabras, un desarrollador tiene la capacidad
de poner en prctica su clculo personalizado.
Esta es la expresin que identifica el valor de entrada de la variable para cada
iteracin. El resultado debe ser congruente con el tipo de la variable y su clculo. Por
ejemplo, si slo estamos contando los objetos, la expresin puede devolver cualquier
tipo de resultado, y la variable se incrementar slo cuando se proporciona un
resultado no nulo, independientemente del tipo.
Esta es una expresin usada para establecer el valor inicial para la variable. Si est en
blanco, la variable es inicializada en null

Incremento de grupo
Incrementador
Personalizado
Clase Fbrica
Expresin de variable

Expresin de valor inicial

Al igual que con los parmetros, JasperReports ofrece algunas variables incorporadas (que son
gestionados directamente por el motor de informes). Usted puede leer estas variables, pero no
pueden modificarlos. Tabla 3-5 enumera las variables incorporadas.
Tabla 3-6 Variables construidas
Nombre de la variable

Definicin

PAGE_NUMBER
COLUMN_NUMBER

Contiene el nmero actual de pginas. En tiempo de "informe", esta variable


contendr el total de nmero de pginas.
Contiene el nmero actual de columnas.

REPORT_COUNT

Contiene el nmero actual de registros que se han procesado.

PAGE_COUNT

Contiene el nmero actual de registros que se han procesado en la pgina actual.

COLUMN_COUNT

Contiene el nmero actual de registros que se han procesado durante la creacin


de la columna actual.
Contiene el nmero actual de registros que se han procesado para el grupo
especificado como un prefijo de la variable.

<nombre grupo>_COUNT

3.7 Expresiones
Aunque iReport est diseado para ser til para los diseadores de informes no tcnicos,
muchos ajustes en un reporte se definen mediante frmulas (tales como las condiciones para
ocultar un elemento, clculos especiales, procesamiento de textos, etc.) que requieren un
conocimiento mnimo de un lenguaje.
Todas las frmulas de JasperReports se definen a travs de expresiones. El lenguaje de
expresiones por defecto es Java, pero tambin se puede utilizar JavaScript o Groovy

3.7.1 El tipo de una expresin


El tipo de una expresin es la naturaleza del valor resultante de la misma; el tipo se determina
por el contexto en el que se utiliza la expresin. Por ejemplo, si su expresin se utiliza para
evaluar una condicin, el tipo de la expresin debe ser Booleano (true o false.
Desafortunadamente, JasperReports es un poco ms formal y en muchos casos hay que ser muy
preciso como a la hora de establecer el tipo de su expresin. Hasta el momento, estamos
hablando de slo tipos de Java (con independencia de la lengua utilizada). Algunos de los tipos
ms importantes son:
java.lang.Boolean
java.lang.Byte
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
java.lang.String
java.util.Date
java.lang.Object

3.7.2 Operadores de expresiones y mtodos del objeto


Operadores en Java, Groovy y JavaScript son similares porque estos idiomas comparten la misma
sintaxis bsica. Los operadores pueden ser aplicado a un nico operando (operadores unitarios)
o en dos operandos (operadores binarios).
Tabla 3-7 Expresin de operadores
Operador

Descripcin

Ejemplo

+
-

Suma (que puede ser utilizado para sumar dos nmeros o para A + B
concatenar dos cadenas)
Resta
A-B

Divisin

A/B

Resto, devuelve el resto de una divisin entera

A% B

||

Operador booleano OR

A||B

&&

Operador booleano AND

A && B

==

Igual *

A == B

!=

No es igual *

A != B

Operador booleano NOT

!A

La tabla muestra una serie de operadores. Esta no es una lista completa. Dentro de la expresin,
la sintaxis para referirse a los parmetros, variables y campos que se definen en el reporte se
resumen en la Tabla 3-7.
Tabla 3-8 Sintaxis para referirse a los objetos del informe
Sintaxis

Descripcin

$ F {nombre_campo }

Especifica el campo nombre_campo ("F" significa campo).

$ V {nombre_variable }

Especifica la variable nombre_ variable.

$ P {name_parameter}

Especifica el parmetro nombre_parametro.

$ P !{ nombre_parametro}

Sintaxis especial utilizado en la consulta de informes de SQL para indicar que el


parmetro no tenga que ser tratado como un valor para transferir a una sentencia
preparada, sino que representa un pedacito de la consulta.
Sintaxis especial para la localizacin de cadenas.

$ R {clave_recurso}

A pesar de la posible complejidad de una expresin, por lo general se trata de una simple
operacin que devuelve un valor. No es un fragmento de cdigo, o un conjunto de muchas
instrucciones, y no se puede usar construcciones complejas o flujo de palabras clave de control,
tales como switches, loops, ciclos for and while, if - else.
Sea como fuere, hay una sencilla construccin de expresin if-else que es muy til en muchas
situaciones. Una expresin es slo una operacin arbitraria (por muy complicado) que devuelve
un valor. Usted puede utilizar todos los operadores matemticos o llamar mtodos, pero en
cualquier etapa de la expresin debe representar un valor. En Java, todos estos operadores slo
pueden aplicarse a los valores primitivos, excepto para el operador de suma (+). El operador de
suma puede ser aplicada a una expresin de cadena con el significado especial de " Concatenar.
As, por ejemplo:
$F{city} + , + $F{state}
Y esto dar lugar a una cadena como esta:
San Francisco, California

Todos los objetos en una expresin pueden incluir mtodos. Un mtodo puede aceptar cero o
ms argumentos, y puede devolver o no un valor; en una expresin se puede utilizar slo
mtodos que devuelven un valor (de lo contrario no tendra nada para regresar de su
expresin). La sintaxis de una llamada al mtodo es:
Objeto.mtodo(argumento1,argumento2, y as sucesivamente.

Algunos ejemplos:
Expresin

Resultado

test.length()

test.substring(0, 3)

tes

test.startsWith(A)

false

test.substring(1, 2).startsWith(e)

True

3.7.3 El uso de un If- Else Construir en una expresin


Una manera de crear una expresin if-else-como es usando el operador especial signo de
interrogacin. He aqu una muestra:
(($F{name}.length() > 50) ? $F{name}.substring(0,50) : $F{name})
La sintaxis es (<condicin>)? <valor en true>: <valor en falso>. Es extremadamente til, y la
buena noticia es que puede ser recursivo, lo que significa que el valor de verdadero y falso puede
ser representado por otra expresin que puede ser una nueva condicin:
(($F{name}.length() > 50) ?
(($F{name}.startsWidth(A)) ? AAAA : BBB):$F{name})
Esta expresin devuelve el String " AAAA " cuando el valor del nombre del campo tiene ms de
50 caracteres y comienza con A, devuelve " BBB " si se trata de ms de 50 caracteres , pero no
comienza con A, y, por ltimo , devuelve el valor del campo original, si ninguno de los dos estas
condiciones es verdadera .
A pesar de la posible complejidad de una expresin (que tienen mltiples instrucciones de ifelse y as sucesivamente), que puede ser insuficiente para definir un valor necesario. Por
ejemplo, si desea imprimir un nmero en nmeros romanos o devolver el nombre del da de la
semana de una fecha, es posible transferir las elaboraciones a un mtodo de una clase externa
en Java, que debe ser declarado como esttico, como se muestra:
MyFormatter.toRomanNumber ($F {MyInteger}.intValue())

La funcin toRomanNumber es un mtodo esttico de la clase MyFormatter, que toma un int


como argumento (la conversin de Integer a int se hace por medio del mtodo intValue ();
que slo se requiere cuando se utiliza Java como el lenguaje) y devuelve la versin romana del
nmero.
Esta tcnica se puede utilizar para muchos propsitos; por ejemplo, para leer el texto de un
campo CLOB o para agregar un valor en un HashMap (un conveniente objeto de Java que
representa un conjunto de pares llave / valor).

Captulo 4. Estilos
Se puede ahorrar tiempo al definir el aspecto de los elementos, incluido todos los ajustes de
fuente, mediante el uso de estilos. Un estilo es un conjunto de propiedades predefinidas que se
refieren al aspecto de los elementos (como el color de fondo, los bordes, y la fuente). En lugar
de continuamente seleccionar los ajustes individuales, se puede definir un estilo
predeterminado del informe, y todas las propiedades no definidas de sus elementos referirse a
ella.

4.1 Trabajo con estilos


El Inspector de reporte muestra los estilos disponibles en la vista de esquema, en el nodo
etiquetado estilos. Para crear un nuevo estilo, clic derecho en el nodo Estilos y seleccione
Agregar estilo en el men contextual (vea la Figura 4-1).

Figura 4-1: Aadir un nuevo estilo al documento

Para un estilo se pueden definir muchas propiedades, que se muestra en la hoja de propiedades
(Figura 4-2). El nico valor de la propiedad de un estilo que se debe establecer es Nombre. Todas
las dems propiedades son opcionales.

Deja el valor por defecto como est cuando no se desea establecer un valor especfico para una
propiedad. Para restaurar el valor por defecto, haga clic en el nombre de la propiedad y

seleccione Restablecer al valor por defecto. (Esto funciona con todas las propiedades de los
elementos que soportan un valor por defecto.)

Figura 4-2: Todas las propiedades de un estilo

Para aplicar un estilo a un elemento, seleccione el elemento y establezca el estilo deseado en la


hoja de propiedades (Figura 4-3).

Figura 4-3: Propiedad estilo de un elemento

Usted puede elegir un estilo especfico que es el estilo predeterminado para el informe. Al
establecer un estilo predeterminado, todas las propiedades de los elementos que tenga un valor
no especificado heredar implcitamente su valor desde el estilo por defecto.

4.2 Creacin de Condiciones de Estilo


El reporte se puede disear, de modo que un estilo cambie dinmicamente. Por ejemplo, se
puede establecer el color de primer plano (foreground) de un campo de texto para negro si un
valor particular es positiva y rojo cuando es negativo. IReport crea estilos condicionales
derivados de un estilo ya existente, para el que se crean las condiciones y se cambia algunas
propiedades.

Para aplicar una condicin a un estilo, haga clic en el nodo de estilo y seleccione Agregar Estilo
condicional (vea la Figura 4-4).

Figura 4-4: Definicin de un estilo condicional

Se puede volver a configurar todos los valores del estilo principal. Los nuevos valores se
utilizaran en lugar de los definidos en el padre cuando la condicin sea verdadera. El nuevo estilo
condicional aparecer en la vista de esquema. Tiene que establecer la condicin (en realidad un
Expresin que devuelve un valor booleano) que ser evaluada durante la prestacin de los
elementos que utilizan el estilo.
En la condicin de expresin se pueden utilizar todas las propiedades del objeto de informe. Por
favor, tenga en cuenta que las condiciones no pueden ser genricos, por ejemplo, no se puede
establecer una condicin como "si el nmero es positivo" o "si la cadena es nula." Tienes que
ser muy especfico, especificando, por ejemplo, que un valor particular (campo, parmetro,
variable o cualquier expresin que implique ellos) debe ser positivo o nula, y as sucesivamente.

Un estilo puede tener un nmero arbitrario de estilos condicionales. Un buen ejemplo de esto
sera el diseo de un reporte para mostrar una campo determinado en un color diferente
(digamos, dependiendo del nmero total de pedidos realizados). Se podra establecer que el
color de primer plano sea rojo en el estilo de base, a continuacin, agregar un estilo condicional
que donde utilice que cuando la variable $ {V total_orders} sea menor que el 5
que el color sea rojo, y establecer otro estilo condicional con el color de primer plano en amarillo
cuando el mismo valor este entre 6 y 10, y el verde para otro estilo condicional para cuando el
nmero de orden sea mayor que 20.

Figura 4-5: Color alternado para cada fila

Veamos un ejemplo de uso de un estilo condicional para lograr el efecto de tener un fondo
alterno para cada fila. El efecto se muestra en la Figura 4-5.

El truco es bastante simple. El primer paso es agregar un elemento de marco en la banda de


detalle. El marco contendr todos los elementos de la banda, por lo que estamos utilizando la
trama como si fuera el fondo de la propia banda; De hecho, el marco debe tomar todo el espacio
disponible en la banda. Entonces todos los campos de texto sern colocados en el interior del
marco (vase la Figura 4-6 y la Figura 4-7).

Figura 4-6: Todos los elementos se colocan en el interior del marco

Figura 4-7: La vista de esquema muestra la jerarqua de los elementos

Esto debe quedar particularmente claro mirando la vista de esquema (Figura 4-7).
Primero definimos un nuevo estilo (llammoslo Style1). Vamos a dejar todos los valores por
defecto, ya que no estamos interesados en cambiar cuando el nmero de fila sea impar (1, 3, 5,
etc...). Ahora aadimos un estilo condicional y establecemos como condicin la expresin:
($V {REPORT_COUNT} % 2) == 0

Lo que la expresin hace es calcular el resto del conjunto por 2 (el operador % tiene esta
funcin). Tenemos que ver si el resto es 0. Si lo es, el nmero de fila actual (en poder del

variable incorporada) es par, se utiliza el estilo condicional Style1.


Para este estilo, establecemos la propiedad de fondo a un gris claro (o cualquier otro color de
nuestra eleccin) y marcar la propiedad opaco (de lo contrario la propiedad anterior no tendr
efecto). Finalmente, se aplica el estilo al elemento de marco al seleccionar el marco y
estableciendo la propiedad estilo a Style1.
REPORT_COUNT

Ejecute el informe. Los resultados deben ser exactamente lo que se presenta en la Figura 4-5.

4.3 Creacin de una nueva plantilla


Vamos a ver cmo crear y utilizar una plantilla personalizada desde cero, a partir de un informe
vaco. En este ejemplo, vamos a crear una plantilla tabular llamada ejemplo_plantilla.jrxml. El
nombre del archivo se utiliza como el nombre de la plantilla en el Asistente del Informe. Una vez
que se crea el nuevo informe, vamos a aadirle cuatro grupos con nombre, Grupo 1, Grupo 2,
Grupo 3 y Grupo 4, y las bandas de encabezado y pie de pgina. Los nombres de grupo pueden
ser arbitrarios, pero es una buena prctica para el diseo de la plantilla establecer un nmero.

En primer lugar, vamos a crear el archivo JRXML. En el men principal, haga clic en Nuevo y
seleccione un informe vaco. Para crear un grupo, haga clic en el nodo raz del reporte en el
Inspector de Reporte y haga clic en Agregar Grupo al Reporte. La expresin de grupo puede estar
vaco; el asistente crear un valor adecuado para ello si se requiere uno. La Figura 4-8 muestra
un diseo simple con los cuatro grupos.

Figura 4-8: Reporte vaco con 4 grupos

Es momento de aadir los elementos de plantilla necesarios en la cabecera de grupo y bandas


de detalle. Aadir un elemento de etiqueta en todas las cabeceras de grupo, ajustando una
etiqueta de texto y un elemento de campo de texto como expresin del campo. En la Figura 49, las etiquetas y el campo de texto utilizan la sintaxis GnLabel y "GnField". La plantilla que
estamos trabajando es un tipo de tabla, por lo que necesitamos proporcionar una etiqueta

elemento en el encabezado de la columna y un campo de texto en la banda de detalle (con el


texto DetailLabel y la expresin "DetailField", respectivamente).

Figura 4-9: Su plantilla personalizada

La parte obligatoria se hace ahora, para que pueda proceder a la adicin de algunos grficos
para conseguir una plantilla completa.

4.3 Instalacin y Uso de la nueva plantilla


Ahora que hemos creado el JRXML para la nueva plantilla, hay que aadirlo a la lista de plantillas
disponibles. Haga clic en Herramientas Opciones, vaya a la seccin iReport, y seleccione la
`pestaa Asistente para plantillas. En la pestaa, agregar el nuevo archivo (Figura 4-10).

Figura 4-10: Nueva plantilla agregada a la lista en el asistente

Una ltima opcin es poner la plantilla en el directorio de plantillas de iReport.

Vamos a tratar de crear un archivo con la nueva plantilla. La nueva plantilla aparece en el
selector de plantillas.

Figura 4-11: Nueva plantilla agregada en el Selector de plantillas

Seleccione la nueva plantilla (ejamplo_plantilla) e iniciar el asistente, siguiendo los pasos para
crear un nuevo informe (2.4, "Creacin de su primer informe"). Para probar la plantilla
correctamente, debe utilizar todos los grupos en el asistente.
La figura 4-12 muestra el informe que resulta:

Figura 4-12: Reporte creado con la nueva plantilla

Si el resultado es correcto, podemos producir una imagen que se utilizar como una vista previa
(formato PNG o GIF). En el modo de vista previa (Figura 4-12), haga clic en el icono
para
guardar la imagen de la pgina actual. La imagen debe estar guardado en el mismo directorio
que la plantilla y se le debe dar el mismo nombre que la plantilla (adems de la extensin. png
o. gif). Abrir el selector de plantillas de nuevo, debera ver la imagen en miniatura de la plantilla.

Captulo 5. Subreportes
Los subreportes representan una de las caractersticas ms avanzadas de JasperReports.
Permiten el diseo de informes muy complejos creados mediante la insercin de uno o ms
reportes en otro reporte. Todos los informes tienen que ser creados con modalidades similares.
Usted ha visto que para generar un informe que necesita tres cosas: un archivo de Jasper, un
mapa de parmetros (que puede estar vaca) para establecer un valor para los parmetros del
informe, y una fuente de datos (o una conexin JDBC) que puede estar vaco. En este captulo,
voy a explicar cmo pasar estos tres objetos al subreporte a travs del informe padre y cmo
crear conexiones dinmicas que son capaces de filtrar los registros del subreporte basado en los
datos del reporte padre. Este captulo tiene las siguientes secciones:

Crear un subreporte
Un ejemplo paso a paso
Devolucin de valores de un informe integrado
Uso del Asistente para subreportes

5.1 Creacin de un subreporte


Como se seal anteriormente, un subreporte es simplemente un informe compuesto por su
propia fuente JRXML y compilado en un archivo Jasper. En trminos generales, la creacin de un
subreporte es muy similar a la creacin de cualquier otro informe. Hay que prestar atencin slo
a los mrgenes de impresin, que se establecen por lo general a cero para subreportes porque
un subreporte est destinado a ser una parte de una pgina, no un documento entero. La
dimensin horizontal de la subreporte debe ser tan grande como el elemento en el que se coloca
en el reporte padre. Para insertarlo, se utiliza el elemento de la paleta Subreporte (Figura 5-1).

Figura 5-1: Subreporte en la paleta

En tiempo de diseo del elemento se representa como un rectngulo (Figura 5-2).

Figura 5-2: Subreporte insertado en la banda de Detalles

No es necesario que el elemento de subreporte sea exactamente tan grande como el informe
que vamos a utilizar como subreporte; las dimensiones del elemento no son realmente
significativas porque el subreporte ocupar todo el espacio que necesita. Usted puede pensar
en el elemento de subreporte como marcador de posicin que define la posicin de la esquina
superior izquierda en la cual el subreporte se alinear. Sin embargo, para evitar resultados
inesperados, siempre es mejor ser precisos.

5.1.1 Vincular un subreporte al reporte padre


Para vincular el subreporte al informe de los padres tiene que definir tres cosas:

Cmo recuperar el objeto Jasper que implementa el subreporte.


Cmo alimentar al objeto con datos.
Cmo establecer los valores de los parmetros del subreporte.

Toda esta informacin se puede definir a travs de la hoja de propiedades de elemento de


subreporte. (Figura 5-3)

Figura 5-3: Vista de propiedades del elemento Subreporte

En primer lugar, echemos un vistazo a cmo se establecen los parmetros del subreporte.

5.1.2 Especificacin del subreporte


Cuando aadimos un subreporte a un informe, tenemos que conocer la ubicacin del archivo de
Jasper que vamos a utilizar para generar el subreporte. Nosotros indicamos a JasperReports
como localizar el archivo u objeto estableciendo la expresin subreporte. Como en muchos otros
contextos en los que las expresiones estn involucrados, tenemos que establecer su tipo, es
decir, el tipo de objeto devuelto por la expresin. Es fcil de imaginar que JasperReports actuar
de manera diferente segn el tipo de expresin. El tipo se fija especificando un valor para la
propiedad Clase de Expresin. Se debe seleccionar en el desplegable (Figura 5-3). La
Tabla 5-1 enumera los posibles tipos de objetos.
Tabla 5-1 Posibles valores para una Expresin de Subreporte
Valor

Explicacin

net.sf.jasperreports.engine.JasperReport

El archivo Jasper pre-cargado en


JasperReport.
Una corriente abierta del archivo Jasper.

java.io.InputStream
java.net.URL

un

objeto

java.io.File

Un archivo URL que identifica la ubicacin del archivo


de Jasper.
Un objeto de archivo que identifica el archivo de Jasper.

java.lang.String

El nombre del archivo de Jasper.

Si la expresin es una cadena (java.lang.String), JasperReports asumirn que el subreporte se


debe cargar desde un archivo Jasper y tratar de localizar el archivo de la misma forma que se
encuentran los recursos. Especficamente, la cadena se interpreta en un principio como un URL.
En caso de fallo (un MalformedURLException ser devuelto), la cadena se interpreta como
una ruta fsica a un archivo; si el archivo no existe, la cadena se interpreta como un recurso
ubicado en la ruta de clases. Esto significa que el uso de una expresin de tipo String significa
que est de alguna manera tratando de especificar una ruta de archivos; opcionalmente, puede
poner su archivo de Jasper en la ruta de clases y se refieren a ella como un recurso (es decir, su
expresin ser algo as como subreporte.jasper, suponiendo que el directorio que
contiene el archivo subreporte.jasper est en la ruta de clases).
El primer paso en la configuracin de un elemento de subreporte debera estar claro: crear una
expresin que se puede utilizar para cargar el objeto Jasper que debe utilizarse para completar
la parte del subreporte en el documento. Por experiencia, el 99 por ciento de las veces ser un
archivo Jasper almacenado en algn lugar del sistema de archivos. Por lo tanto, si estamos
cargando el subreporte desde el sistema de archivos, sugiero dos opciones para hacer el
la vida del diseador y el desarrollador un poco ms fcil. Ambos son muy similares a los
utilizados cuando se hizo referencia a las imgenes.

Primero, coloque el archivo subreporte en un directorio que se encuentra en la ruta de


clases. Esto le permite utilizar expresiones de subreportes muy sencillas, como una
cadena que contiene slo el nombre del archivo subreporte (es decir,
subreporte.jasper). iReport siempre incluye la ruta de clases al directorio del informe
que se est ejecutando, por lo que todos los archivos de subreporte Jasper se pueden
encontrar fcilmente si se encuentran en el mismo directorio.
Segundo, parametrizar la ubicacin del archivo Jasper y crear sobre la marcha la ruta
absoluta real del archivo a cargar. Esto puede ser logrado con un parmetro que
contiene el directorio principal del subreporte ( llammoslo SUBREPORT_DIRECTORY )
y una expresin como esta:
$P {SUBREPORT_DIRECTORY}

+ subreporte.jasper

5.1.3 Especificacin del origen de datos


Para que JasperReports recupere los datos y llene el subreporte, hay que configurar la fuente
de datos del subreporte. Por lo general, tenemos tres opciones:

Utilice una consulta SQL y la misma conexin JDBC como padre (caso sper fcil ); o
Use otro tipo de fuente de datos (por ejemplo, un archivo XML) y algunos elementos de
orgenes de datos para crear una expresin o pasar la instancia de origen de datos
necesaria.
En circunstancias muy especiales, podemos no pasar ningn dato al subreporte. Vamos
a explicar esta ltima opcin en profundidad ya que proporciona una forma de simular
la inclusin de partes estticas de los documentos (como encabezados, pies de pgina,
fondos, etc.).

Las conexiones JDBC hacen el uso de subreportes bastante simple. Una expresin de conexin
debe identificar un objeto java.sql.Connection. Por lo general, se ejecuta la consulta SQL
usando la misma conexin de base de datos como que el reporte padre; la conexin puede ser
referenciada con el parmetro integrado REPORT_CONNECTION .Debe quedar claro que si se
pasa una conexin JDBC para el subreporte, es porque hemos definido una consulta SQL en el
subreporte, una consulta que se utiliza para llenarlo.
El uso de una fuente de datos diferente a veces es necesario cuando no se est utilizando una
conexin como JDBC; es ms complicado pero muy potente. Se requiere escribir una expresin
de origen de datos que devuelva una instancia JRDataSource que ser utilizada para llenar el
subreporte. Dependiendo de lo que quiere lograr, se puede pasar la fuente de datos que
alimentarn el subreporte a travs un parmetro, o puede definir el origen de datos de forma
dinmica cada vez que sea necesario. Si el informe de los padres se ejecuta utilizando una
fuente de datos, esta fuente de datos se almacena en el parmetro integrado
REPORT_DATASOURCE. Por otro lado, el REPORT_DATASOURCE nunca debe ser usado para
alimentar a un subreporte; una fuente de datos es un objeto consumible que es utilizable para
la alimentacin de un informe slo una vez. Por lo tanto, la tcnica de parmetro no es adecuado
cuando todos los registros del informe principal tienen su propio subreporte (a menos que haya

un solo registro en el informe principal). Cuando hablamos de las fuentes de datos se ver cmo
este problema se resuelve fcilmente con fuentes de datos personalizadas.

5.1.4 Paso de Parmetros


Cuando un informe se invoca desde un programa (usando uno de los mtodos fillReport,
por ejemplo), se pasa un mapa parmetros para darle valores a sus parmetros. Un enfoque
similar se utiliza para definir el valor de los parmetros del subreporte. Con los subreportes no
hay que definir un mapa (incluso, si es posible, la especificacin de un Mapa Expresin de
Parmetros). El motor de reportes se har cargo de eso, pero usted todava puede crear un
conjunto de pares de parmetros nombre/ objeto que ser utilizado para establecer los valores
de los parmetros del subreporte.
La principal ventaja de un mapa de parmetros es que los valores se pueden proporcionar como
expresiones, haciendo el mapa potencialmente dinmico. Los parmetros del subreporte se
establecen mediante la propiedad Parmetros (ver Figura 5-3). Haga clic en el botn para que
aparezca el dilogo de parmetros (ver Figura 5-4). La interfaz se explica por s: haciendo clic en
el botn Aadir, aparecer un cuadro de dilogo en el que puede agregar parmetros que
alimentarn el mapa los parmetros del subreporte.

Figura 5-4: Parmetros del subreporte

El nombre de parmetro tiene que ser el mismo que el declarado en el subreporte. Los nombres
distinguen entre maysculas y minsculas, as que la capitalizacin cuenta. Si comete un error

al escribir el nombre o el parmetro insertado no se ha definido, no se genera ningn error (pero


probablemente algo no funcionar, y usted se quedar pensando por qu).
En el campo Expresin en el dilogo de parmetros del subreporte, debe proporcionar una
expresin estndar JasperReports en el que se puede utilizar los campos, parmetros y variables.
El tipo de retorno tiene que ser congruente con el tipo de parmetro declarado en el
subreporte; de otro modo, una excepcin de ClassCastException se producir en tiempo
de ejecucin.
Uno de los usos ms comunes de los parmetros del subreporte es pasar la clave de un registro
impreso en el informe padre con el fin de ejecutar una consulta en el subreporte a travs del
cual se puede extraer de los registros a que se refiere encabezados y lneas. Por ejemplo,
digamos que usted tiene en el informe principal un conjunto de clientes, y desea mostrar
informacin adicional sobre ellos, tales como su informacin de contacto. Los subreportes
utilizarn el ID de cliente para obtener la informacin de contacto. El ID de cliente se debe pasar
al subreporte como parmetro y su valor va a cambiar para cada registro en el informe principal.
Segn se cita a continuacin, usted tiene la opcin de proporcionar directamente un mapa de
parmetros para ser utilizado con el subreporte; el Mapa Expresin de Parmetros le
permite definir una expresin, el resultado de los cuales debe ser un objeto java.util.Map.
Es posible, por ejemplo, preparar un mapa diseado para el subreporte en la aplicacin, pasarlo
al informe principal utilizando un parmetro y utilizar este parmetro como una expresin (por
ejemplo, $ P {myMap}) para pasar el mapa al subreporte. Tambin es posible pasar al subreporte
el mismo mapa de parmetros que se proporcion al reporte padre mediante el parmetro
integrado REPORT_PARAMETERS_MAP. En este caso la expresin es:
$ P {REPORT_PARAMETERS_MAP}
Puesto que los parmetros del subreporte se pueden utilizar en conjunto con este mapa, usted
puede incluso utilizarlo para pasar parmetros comunes, tales como el nombre del usuario que
ejecuta el informe.

5.2 Un ejemplo paso a paso


Vamos a poner en prctica lo que has aprendido hasta ahora. Digamos que usted quiere imprimir
una lista de los pases que han hecho pedidos y usar un subreporte con la lista de clientes en
cada pas. Vamos a utilizar una conexin JDBC a la base de datos de muestra de JasperReports;
las nicas tablas involucradas son orders (para extraer los pases) y address (para la
informacin de los clientes). Por favor, tenga en cuenta que el informe que estamos creando
podra realizarse sin necesidad de utilizar un subreporte, pero simplemente estamos tratando
de mantener las cosas simples para ilustrar el procedimiento.
1. Primero, cree un nuevo reporte vaco llamado master.jrxml. Vamos a suponer que la
conexin activa es a la base de datos de muestra JasperReports.

2. Ajuste la consulta de la siguiente manera; que est diseada para extraer los nombres de
pases, ordenadas por nombre:
select distinct shipcountry from orders order by shipcountry
3. El campo SHIPCOUNTRY debe aparecer en la vista de esquema. Arrastre el campo a la banda
de detalle, ajuste del campo de texto y el tamao de la fuente (Figura 5-5).

Figura 5-5: Campo SHIPCOUNTRY en la banda de Detalles

4. Pruebe el reporte haciendo clic en el botn Vista previa. Usted debe obtener algo similar a la
Figura 5-6.

Figura 5-6: Lista de pases

A continuacin, vamos a crear el reporte que se utilizar como subreporte. El subreporte debe
tener las siguientes caractersticas:

Sin mrgenes (esto no es obligatorio, pero por supuesto que no son necesarios).
Ningn parmetro debe tener el nombre del pas.
La anchura debe ser congruente con el espacio que queremos reservar para este en el
informe principal; vamos a utilizar todo el ancho de la pgina menos los mrgenes.

Un conjunto de campos de texto en la banda de detalle para mostrar el nombre y


apellido de cada cliente.

1. Crear un nuevo reporte vaco llamado subreport.jrxml (si tienes que elegir un nombre
diferente, tenerlo en cuenta, porque lo vamos a utilizar cuando se conecte el reporte principal
al subreporte).
2. Eliminar los mrgenes de la pgina y ajustar el ancho de pgina(es decir, una pgina A4 tiene
un ancho de 595 pxeles, restando 20 pxeles del margen izquierdo y 20 del derecho, la nueva
pgina debe establecerse en un ancho de 555 pxeles con mrgenes de 0).
3. Aadir al presente reporte un parmetro que llamaremos PAS. El tipo debe ajustarse a
java.lang.String y el valor por defecto a una cadena en blanco () o, si lo prefiere, a un
nombre de pas como Argentina. Este valor predeterminado se puede anular con lo que sea
que especificamos en el informe principal. Estamos asignndole al parmetro ahora slo un
valor predeterminado en iReport (no en JasperReports) porque es obligatorio cuando se utiliza
un parmetro dentro de una consulta de reporte.
4. Abra el dilogo de consulta y escriba la consulta para seleccionar la informacin de los clientes
basados en el orden de los pases; puede ser algo como esto:

select distinct shipname, shipcity from orders where shipcountry


=$P{PAS}
Estamos recibiendo todas las distintas direcciones de los clientes que hacen pedidos en el pas
representados por el parmetro PAS.
5. iReport debera detectar los siguientes campos: SHIPNAME y SHIPCITY.
6. Pongamos ambos campos en la banda de detalle del reporte (Figura 5-7)

Figura 5-7: Diseo del subreporte

Ahora tenemos que probar este reporte. Tenemos que probar la forma en que iReport genera
el archivo Jasper que necesitamos cuando utilizamos este informe como un subreporte. Cuando
se ejecuta, preste atencin a lo que muestra iReport en la vista de la consola (Figura 5-8). En
particular, prestar atencin a la ubicacin donde se ha almacenado el archivo Jasper. De forma
predeterminada, debe estar en la misma ubicacin en la que ha guardado el archivo JRXML. En
este ejemplo, he usado el mismo directorio para las plantillas del reporte principal y el
subreporte, as que contendr ambos master.jasper y subreport.jasper.

Figura 5-8: Salida de la ejecucin del subreporte

Dependiendo del valor de PAIS, se puede obtener un informe vaco o un informe que muestra
algunos artculos. No importa mucho en este punto, slo comprobar que se gener el archivo
Jasper.
Lo que tenemos ahora son dos informes: el maestro que muestran los nombres de los pases, y
el que pronto ser un subreporte, que muestra la los clientes de un pas en particular. Vamos a
ponerlos juntos.

Figura 5-9: Asistente de Subreporte

Al agregar un elemento de subreporte, el Asistente para Subreportes aparece (Figura 5-9).


Cuando todos los conceptos sobre el uso de subreportes estn claras, el asistente le proporciona
una manera de ahorrar algo de tiempo. Sin embargo, por ahora vamos a omitir el asistente.
1. En el asistente, seleccione la opcin Slo crear el elemento de subreporte y haga clic en
Terminar.

Figura 5-10: Elemento de subreporte en la banda de detalles

2. Ajuste el elemento de subreporte para utilizar todo el tamao horizontal de la banda.


La dimensin vertical no es importante porque, al imprimir el informe, JasperReports usar todo
el espacio vertical necesario, sin importar el tamao de elemento (ver Figura 5-10).
3. Seleccione el elemento de subreporte para que la hoja de propiedades muestre sus
propiedades (Figura 5-11).

Figura 5-11: Propiedades del subreporte

4. Queremos utilizar la misma conexin de base de datos que se utiliza en el informe principal
para rellenar el subreporte, por lo que pusimos en el la propiedad Tipo de conexin el valor
Utilizar una expresin de conexin. La expresin ser slo $P {REPORT_CONNECTION}.
Como se ha explicado, REPORT_CONNECTION es un parmetro integrado que hace referencia
a la conexin utilizada en el informe.

5. A continuacin, definir la expresin subreporte; esta es utilizada por JasperReports para


localizar el informe que se inserta como un subreporte. Suponiendo que el archivo Jasper del

subreporte est en la ruta de clases (de una perspectiva iReport es suficiente que est en el
mismo directorio que el informe principal), la expresin vamos a utilizar es la siguiente:
subreport.jasper
6. Finalmente, dado que el subreporte que estamos utilizando requiere el parmetro PAS,
agregue un parmetro del subreporte (haciendo clic en el botn de la propiedad
Parmetros). Haga clic en Agregar y configure el nombre del parmetro de subreporte a PAS
(el nombre debe coincidir con el nombre del parmetro que hemos definido en el subreporte);
como expresin para el valor, elegimos el campo que contiene el nombre del pas, es decir, $F
{SHIPCOUNTRY}.
7. Vista previa del reporte. Si todo se ha hecho correctamente, usted debe obtener un resultado
como el que se muestra en la Figura 5-12.

Figura 5-12: Resultado final

En este ejemplo hemos creado un informe bsico y un subreporte. El nmero de subreportes


que se puede colocar en un informe es ilimitado, y pueden ser utilizados de forma recursiva, lo
que significa que uno subreporte puede contener otros subreportes. Usted puede crear muy
subreporte s pequeos (slo un campo de texto) y usarlos para buscar los valores, puede utilizar
un diseo de pgina con dos subreportes uno al lado del otro que muestren dos listas diferentes
de valores, y as sucesivamente.

Cuando usted tiene varios subreportes, uno tras otro, asegrese de configurar el tipo de posicin
del elemento de informe a Float. De esta manera, se evita el riesgo de solapamiento de los
subreportes cuando el espacio que requieren crece. Otra sugerencia es que, al utilizar los
subreportes, uno tras otro, coloque cada subreportes en una banda diferente, la divisin de la
banda de detalle utilizando lo que se llama un grupo falso. Este es un grupo que tiene como
expresin, por ejemplo, el parmetro REPORT_COUNT, que asegura que obtendr el
encabezado de grupo falso y bandas de pie de pgina para cada detalle. De esta manera, usted
optimizar la generacin de informes.

5.3 Retornando valores desde un subreporte


En un informe, a menudo es til obtener el resultado de algn tipo de clculo que se ha realizado
en un subreporte (por ejemplo, el nmero de registros). JasperReports ofrece una funcin que
permite a los usuarios recuperar los valores desde el interior de subreporte. Este mecanismo
funciona del mismo modo que el paso de parmetros de entrada para los subreportes. La idea
es guardar los valores calculados durante el llenado del subreporte en variables en el informe
principal. Las vinculaciones entre los valores calculados y las variables locales se pueden
establecer en el subreporte la propiedad del subreporte Valores de Retorno.
Vamos a ver cmo usarlo con la muestra que hemos creado en la seccin anterior. Supongamos
que queremos imprimir en el informe principal el nmero de ciudades que hemos encontrado
para cada pas. Desde la perspectiva del subreporte, este valor est representado por la variable
REPORT_COUNT, que no es accesible directamente desde el informe principal. As que el primer
paso es crear una variable para albergar este valor al final de la elaboracin del subreporte. La
variable debe ser consistente con el valor que almacenar. En este caso, es un nmero entero.
1. En el informe principal, crear una nueva variable (llammosla SUBREPORT_COUNT) que sea
de tipo java.lang.Integer y tipo de clculo del Sistema.
2. Seleccione el elemento de subreportes y abra el dilogo de propiedades Valores de Retorno
haciendo clic en el botn correspondiente Figura 5-13).

Figura 5-13: Dilogo de Valores de retorno

3. Haga clic en el botn Agregar para crear el nuevo valor de retorno y aparecer el dilogo
Agregar/Modificar variable (Figura 5-14).

Figura 5-14: Dilogo de Agregar/Modificar variable

4. Seleccione un valor calculado a partir de las variables integradas del subreporte


(REPORT_COUNT), as como la variable local que contendr los valores devueltos por la variable
(SUBREPORT_COUNT).
5. A continuacin, seleccione un tipo de clculo. Si desea que un valor de un subreporte sea

devuelto tal como es, seleccione el tipo Nada. De lo contrario, varios tipos de clculo pueden
ser seleccionados. Por ejemplo, si el valor deseado es el promedio de la cantidad de registros
dentro de un informe integrado que se invoca repetidamente, establezca el tipo de clculo a
Promedio.
El valor que viene del subreporte slo est disponible cuando se imprimen todas las bandas que
contiene el subreporte. Si necesita imprimir este valor utilizando un campo de texto colocado
en la misma banda que el subreporte, defina el Tiempo de evaluacin del campo de texto en
Banda (Figura 5-15).

Figura 5-15: Un campo de texto que muestra un valor de retorno del subreporte

La vista previa del reporte debe ser as (Figura 5-16):

Figura 5-16: Resultado final

5.4 Uso del Asistente de Subreporte


Para simplificar la insercin de un subreporte, un asistente para la creacin de subreporte se
inicia automticamente cuando se agrega un elemento subreporte a un informe.

Figura 5-17: Asistente para la creacin de subreportes

Usted puede utilizar el Asistente de Subreporte, que se muestra en la Figura 5-17, para crear un
nuevo informe que ser referenciado como subreporte o para hacer referencia a un informe
existente. En este ltimo caso, si el informe que usted elija contiene uno o ms parmetros, el
asistente proporciona una manera fcil de definir valores para ellos.

5.4.1 Crear un nuevo reporte mediante el Asistente de Subreporte


Si va a agregar un subreporte al informe actual, el Asistente de Subreporte puede crear el
informe que se utilizar como subreporte. Los pasos para crear el nuevo informe son muy
similares a los que se siguen en el Asistente para informes:
1. Seleccione una conexin u origen de datos. Si el origen de datos requiere una consulta (tales
como JDBC o una conexin Hibernate), puede escribir en el rea de texto o cargarlo desde un
archivo.
2. Seleccione los campos.
3. Defina agrupacin.
4. Seleccione el diseo.
5. Defina la expresin de subreporte.
6. Defina la expresin de conexin.

La expresin de subreporte se utiliza para hacer referencia al archivo Jasper del subreporte. El
asistente le permite hacer esto de dos maneras:

Guarde la parte de la ruta de la URL subreporte en un parmetro, como se muestra en


la Figura 5-18, para que sea modificable en tiempo de ejecucin estableciendo un valor
diferente para el parmetro (el camino del subreporte es el valor predeterminado); o

Guardar la ruta completa en la expresin.

Figura 5-18: Expresin de Subreporte

Si elige la segunda opcin, la expresin almacenar toda la ruta absoluta al archivo Jasper del
subreporte. Esto asegura que todo va a trabajar en iReport, pero no es muy conveniente en
otros entornos. Por esta razn, sugiero que modifique la expresin utilizando el mtodo que
descrito en la seccin 5.1.2 Especificacin del subreporte.
El subreporte no se compila al crearlo. Para probar su informe, primero debe obtener una vista
previa. Esto obliga a ser compilado. Cuando se crea un nuevo subreporte, no puede especificar
los parmetros utilizando el asistente. Usted ser capaz de aadir parmetros y utilizar
en la consulta subreporte despus que el informe se crea. As que en este punto, para filtrar la
consulta subreporte siga estos pasos:
1. Aadir un parmetro al informe que implementa el subreporte.

2. Utilice este parmetro en la consulta con la tpica sintaxis $ P {MyParam} (o $!P {MyParam}
si el parmetro debe ser concatenado con la consulta como est).
3. En el informe principal, seleccione el elemento de subreporte y aadir una entrada en la lista
de parmetros del subreporte. El nuevo parmetro del subreporte debe ser llamado, como la
contraparte en el subreporte, y su valor debe ser definido mediante una expresin (vase el
seccin 5.1.4, Paso de parmetros).
4. Si el subreporte no se basa en una sentencia de SQL o una consulta HQL, an tiene que
establecer la expresin del origen de los datos del subreporte para ejecutar correctamente su
informe.
5. Como se mencion anteriormente, puede utilizar el Asistente de Subreporte para crear un
nuevo informe que se referenciar como subreporte o para hacer referencia a un informe
existente. En este ltimo caso, si el informe elegido contiene uno o ms parmetros, el asistente
proporciona una manera sencilla de definir un valor para cada uno.

5.4.2 Especificacin de un reporte existente en el Asistente de


Subreporte
Puede apuntar a un informe existente como subreporte con el Asistente de Subreporte. El
primer paso es seleccionar un JRXML o Jasper en la primera pantalla del asistente. El segundo
paso del asistente gestiona expresiones para la conexin o la fuente de datos utilizada para
llenar el subreporte (Figura 5-19).

Figura 5-19: Segunda pantalla del asistente

Para seleccionar una conexin:

Usted puede seleccionar Usar la misma conexin que se utiliza para rellenar el informe
principal cuando se usa un subreporte basado en JDBC. La conexin JDBC se pasa al
subreporte para ejecutarlo.

Para especificar una conexin JDBC diferente, seleccione Utilizar otra conexin.

Seleccione Usar una fuente de datos vaca para definir la expresin de origen de datos
a la nueva JREmptyDataSource (). Eso crea una fuente de datos especial que
proporciona (cuando se declaran de esta manera) un registro nico con todos los valores
de los campos establecidos en null. Es muy til cuando se utiliza el subreporte para
mostrar
contenido
esttico.
En algunos casos es posible que desee evitar el uso de cualquier conexin o fuente de
datos, como por ejemplo cuando se est visualizando el contenido esttico. Por lo
general, una fuente de datos o una conexin siempre es necesario para evitar que el
subreporte est en blanco. Cuando un subreporte no requiere una fuente de datos, sin
embargo, se da a entender que la propiedad de informe Cuando ningn tipo de datos
se establece en Sin Detalles o no Seccin de Datos para garantizar que al menos una
parte del documento se imprime en realidad.

Para utilizar un objeto JRDataSource para llenar el subreporte, seleccione Usar una
expresin JRDataSource y escribir una expresin capaz de devolver un objeto
JRDataSource.

Si el reporte seleccionado contiene parmetros, se muestran al lado (Figura 5-20). Para cada
parmetro, se puede establecer un valor por la eleccin de un objeto a partir del combo.
Por supuesto, usted puede escribir su propia expresin, pero no se proporciona ningn
editor de expresiones en este contexto.

Figura 5-20: Establecer los parmetros del subreporte usando el asistente

Puede omitir este paso y editar los parmetros del subreporte posteriormente utilizando el
mtodo cannico explicados anteriormente en este captulo (5.1.4, "Paso de Parmetros").
Por ltimo, debe designar la forma de generar la expresin del subreporte. Del mismo modo
que para un nuevo subreporte, hay dos opciones: almacenar el camino en un parmetro para
ajustar de forma dinmica o establecer una ruta no modificable (ver Figura 5-21). Una vez ms,
todas las opciones se pueden modificar despus de salir del Asistente para subreportes.

Figura 5-21: ltimo paso en el asistente de subreporte

Captulo 6. Grficos
JasperReports proporciona la capacidad de hacer los grficos dentro de un reporte de diferentes
maneras. Usted puede utilizar JFreeChart, una poderosa biblioteca de generacin grfica de
cdigo abierto, o partir de la versin 5.0 se puede utilizar grficos de HTML5.

En un grfico, es posible imprimir los datos procedentes de la base de datos principal o de un


sub conjunto de datos (vamos a tratar con sub conjunto de datos en Captulo 14). Esto le permite
incluir
diferentes
graficos
en
un
documento
sin
utilizar
subreportes.
JasperReports es compatible con una amplia variedad de tipos de grficos: rea, Bar, Bar en 3D,
burbuja, lnea, circular, circular 3D, grfico de dispersin, barras apiladas,
Barra apilada en 3D, Series de Tiempo, etc. Un grfico de mltiples ejes se puede utilizar para
agregar mltiples grficos en uno solo.

6.1 Creacin de un grfico simple


En esta seccin, aprender cmo utilizar la herramienta para grficos para crear un reporte que
contenga un grfico circular 3D.Se utilizar la base de datos de ejemplo de JasperReports para
este ejemplo:

1. Cree un nuevo documento vaco.


2. Abra el cuadro de dilogo Consulta del reporte (Figura 6-1) haciendo click en el botn que
representa un cilindro en la barra de herramientas de diseo.

Figura 6-1: Ventana de la consulta

3. Utilice esta consulta sencilla para mostrar el nmero de pedidos en diferentes pases:
select COUNT (*) as orders, shipcountry from orders group by shipcountry

4. Confirme la consulta haciendo clic en Aceptar. IReport registrar los campos de consultaseleccionado.
5. Coloque los campos en la banda de detalle arrastrndolos desde la vista de esquema (Figura
6-2). Esto crear una pequea tabla con los valores que queremos mostrar en el grfico.

Figura 6-2: Diseo inicial

6 Reorganizar las bandas y ampliar el resumen; aqu es donde vamos a colocar nuestro nuevo
grfico.
7. Seleccione la herramienta Grfico y arrstrela hasta la banda de resumen. Cuando se agrega
un nuevo elemento grfico a un informe, iReport muestra una ventana de seleccin de grafico
desde la que se puede elegir el tipo de grfico (Figura 6-3).

Figura 6-3: ventana de seleccin de grafico

8. Seleccione el icono Pie 3D y haga clic en Aceptar. Figura 6-4 es un ejemplo de una imagen
genrica para mostrar ms o menos donde el grfico se mostrar. IReport no muestra datos en
tiempo real y grficos en el diseador.

Figura 6-4: El grfico se coloca en la banda Resumen

Ahora tenemos que configurar el grafico.


9. Haga clic en el grfico y seleccione la opcin del men Datos del grfico para que la ventana
Detalles de Grfico se abra (Figura 6-5). En esta ventana puede seleccionar los datos que se
utilizar con el fin de crear el grfico.
10. En el combo box Tipo Conjunto de datos, seleccione conjunto de datos del Pie. Esta lista
desplegable le permite especificar los tipos de conjuntos de datos para generar el grfico. Por lo
general, un solo tipo de conjunto de datos est disponible, excepto cuando se genera un grfico
XY de barras.
11. En la pestaa Conjunto de datos, se puede definir el conjunto de datos en el contexto del
informe. Especficamente, restablecer Tipo y restablecer grupo lo que permitir restablecer
peridicamente el conjunto de datos. Esto es til, por ejemplo, al resumir los datos en relacin
en una agrupacin especial. Incrementar Tipo e Incrementar Grupo especfica los eventos que
determinan cundo se deben aadir nuevos valores al conjunto de datos .Por defecto, cada

registro del conjunto de datos se utiliza para rellenar el grafico, cada uno corresponde a un valor
impreso en el grfico. Este comportamiento se puede cambiar, forzando el motor a recoger los
datos del grafico en un momento determinado (por ejemplo, cada vez que se alcanza el final de
un grupo).
La expresin de filtro permite aadir un indicador para determinar si se debe agregar un registro
al conjunto de registros diseado para llenar el grfico. Esta expresin debe devolver un valor
booleano. IReport considera que una cadena en blanco significa "agregar todos
los registros.

Figura 6-5: Ventana Detalles del grafico

Para este ejemplo, establezca el tipo de restablecimiento al reporte ya que no desea que los
datos se restablezcan, y deje el Tipo Incremento establecido en Ninguno para que cada registro
se aada al conjunto de datos.
12. En la pestaa Detalles, escriba una expresin para asociar cada valor con el origen de datos.
Para el tipo de grfico 3D, se pueden introducir tres expresiones: llave, el valor y la etiqueta
(Figura 6-6).

Llave: debe ser un valor nico para identificar un segmento del grfico circular. Si un
valor llave se repite, la etiqueta y valores previamente asociados con esa llave se
sobrescribe. Una llave no puede ser nulo.
Valor: especifica el valor numrico asociado a la llave.
Etiqueta: le permite especificar una etiqueta para cada sector del grfico circular. Esta
expresin es opcional, y el valor predeterminado es el valor de la llave.

Figura 6-6: Configuracin del conjunto de datos

13. La configuracin de este simple grafico ya est completa, y podemos obtener una vista previa
del reporte para ver el resultado, como se muestra en la Figura 6-7.

Figura 6-7: Reporte Final

14. En este ejemplo, entre las expresiones que se muestran en la Figura 6-6, y a continuacin,
cierre el cuadro de dilogo.

En este caso, cada sector representa un pas, y el valor de la porcin es el total del envo para
ese pas. El cuadro en s se encarga de calcular el envo total para todos los pases y la creacin
del tamao del segmento con respecto al total.

6.2 Valor hipervnculos


Algunos tipos de conjuntos de datos proporcionan una forma de asignar un hipervnculo al valor
representado en el grfico, permitiendo al usuario abrir una pgina web o navegar a travs del
reporte haciendo clic en el grfico. Para establecer los parmetros de hipervnculo,
vaya a la pestaa Hipervnculo en la pestaa Detalles del cuadro de dilogo Detalles de grfico,
como se muestra en la siguiente figura.

Figura 6-8: HiperEnlace para una porcin del conjunto de datos del grafico

El rea de clic-habilitado depende del tipo de grfico. Los grficos de sectores, el hipervnculo
est vinculado a cada parte del pastel; para los grficos de barras, las reas de clic habilitadas
son
las
propias
barras.
Recordemos que los hipervnculos incluyen expresiones para hacer referencia a todos los
campos, variables y parmetros del conjunto de datos utilizado por un grfico.

Captulo 7. Tablas Cruzadas


7.1 Uso del Asistente de tablas de referencias cruzadas
Cuando se agrega un elemento de tabla de referencias cruzadas a un informe, iReport muestra
el Asistente de tablas de referencias cruzadas automticamente. Para entender cmo trabajar
con tablas de referencias cruzadas, le guiar a travs de la creacin de una con el asistente.
1. Comience con un reporte en blanco que contenga esta consulta:
select * from orders

Incluir la tabla de referencias cruzadas al final del informe, en la banda de resumen.


2. Arrastre la herramienta de referencias cruzadas en la banda de resumen. Aparece la primera
pantalla del Asistente para tablas de referencias cruzadas.

Figura 7-1: Primer paso en el asistente de Tabla cruzada

3. Seleccione el conjunto de datos para llenar la tabla de referencias cruzadas. Especifique el


conjunto de datos del reporte principal (como se muestra en la Figura 7-1).
4. Haga clic en Siguiente para ir al siguiente paso.
5. En la segunda pantalla, usted tiene que definir al menos un grupo de filas. Para los propsitos
de este ejemplo, vamos a agrupar todos los registros por Pas Destinatario, como se muestra en
la Figura 7-2.

Figura 7-2: Segundo paso: definicin de los grupos de filas

Agrupar los resultados por Pas Destinatario en cada fila de la tabla de referencias cruzadas en
referencia a un pas especfico. Al contrario que en el reporte principal, JasperReports ordenar
los datos uno mismo, aunque se puede desactivar esta funcin para acelerar el proceso de
llenado si sus datos estn ya ordenados.
6. Haga clic en Siguiente para pasar a la tercera fase (Figura 7-3). Agrupar los datos por el campo
Fecha Envo. En concreto, se utiliza una funcin que devuelve el ao de la fecha, por lo tanto la
agrupacin de los pedidos por ao.

Figura 7-3: Definicin de los grupos de columnas

Como se puede ver en la Figura 7-3, siempre que tenga un campo de tiempo (fecha, hora), se
puede utilizar una funcin de agregacin basada en el tiempo (como ao, mes, semana o da), o
se puede tratar como un valor normal (en cuyo caso se puede usar la funcin de agregacin
nica para agrupar los registros que tienen el mismo valor).
7. Haga clic en Siguiente para pasar a la siguiente etapa.
8. Es el momento de definir los datos de detalle. Normalmente, el detalle (o medida) es el
resultado de una funcin de agregacin como el conteo de las rdenes por pas por ao, o la
suma de la carga para la misma combinacin (pas / ao). Tendrn que elegir para imprimir el
nmero de pedidos realizados especificando ORDERID (campo) en el combo box Medida y
COUNT en el combo box Funcin (vea la Figura 7-4).
9. Una vez ms, haga clic en Siguiente para continuar.

Figura 7-4: Definicin de la medida

10. En el ltimo paso, puede configurar las opciones para el diseo de tabla de referencias
cruzadas. Puede indicar si desea ver las lneas de cuadrcula, el uso del color establecido para
distinguir los totales, encabezados y celdas de detalle, y el total de las filas y columnas.
Para este ejemplo, seleccione todas las opciones del cuadro de control, como se muestra en la
Figura 7-5, y haga clic en Finalizar.

Figura 7-5: Algunas opciones de la tabla cruzada

Tenga en cuenta que al agregar una tabla de referencias cruzadas en el informe, iReport crea
una ficha correspondiente en la ventana de diseo. Esta ficha es la del diseador de tabla de
referencias cruzadas para el nuevo elemento de tabla de referencias cruzadas.

Figura 7-6: Vista Esquema en rbol - detalles de la tabla cruzada

En la vista de esquema, el elemento de tabla de referencias cruzadas muestra toda la estructura


de tabla de referencias cruzadas, incluyendo los parmetros de referencias cruzadas y la fila y
grupos de columnas, las medidas y las celdas (ver Figura 7-6).

Figura 7-7: Nuestro primer Tabla cruzada

Cuando se ejecuta el nuevo reporte que debe obtener un resultado similar al que se muestra en
la Figura 7-7. La ltima columna contiene el total de cada fila, a travs de todas las columnas. La
ltima fila contiene el total de cada columna, a travs de todas las filas. Finalmente, la ltima
celda (en la esquina de abajo a la derecha) contiene el total combinado de todos los pedidos
(830).

7.2 Trabajar con columnas, filas y Medidas


Una tabla de referencias cruzadas debe tener al menos un grupo de filas y un grupo de columnas.
Las filas y columnas se definen por estos grupos. Cada grupo de filas y columnas puede ser
totalizado. La siguiente es una tabla de referencias cruzadas de base con un grupo de la columna
y un grupo fila; los grupos se totalizaron:

Cuando se agrega un grupo de filas, iReport aade la fila con una cabecera y subtotal. La
tabla de referencias cruzadas aparece como sigue:

Agregar un grupo de columnas muestra un resultado similar, con una nueva columna,
encabezado y subtotal:

Figura 7-8: Agregar grupo de fila

Los grupos de filas y de columnas se muestran en la vista de esquema. Para agregar un grupo de
filas, por ejemplo, haga clic en el nodo filas y seleccione Agregar grupo de filas (ver Figura 7-8).
El nuevo grupo aparece en la vista de esquema y las celdas relativas se crean en el diseador de
tabla de referencias cruzadas. Tiene que establecer una expresin Bucket que es una expresin

utilizada para agrupar las filas. Por ejemplo, se puede agregar un grupo de filas para mostrar las
ciudades de cada pas. En ese caso, una expresin vlida podra ser el campo SHIPCITY (la
expresin se vera como $ F {SHIPCITY}). La expresin se debe establecer en las propiedades de
grupo de filas.

Figura 7-9: Layout despus de la nueva fila

La expresin es la nica informacin que se debe establecer para cada nuevo grupo. Otras de
las configuraciones de tablas de referencias cruzadas son las siguientes:
Posicin total
Define la presencia de una fila para mostrar los subtotales
Orden
Orden de los valores del grupo (ascendente o descendente)
Expresin Comparador
Devuelve una instancia de java.util.Comparator que debe utilizarse para ordenar los valores
Utilizando el diseador, los tamaos de columna y fila se pueden modificar directamente
arrastrando los bordes de las celdas. El contenido de cada celda debe estar completamente
contenida en la celda (ms o menos como ocurre con las bandas en el reporte principal).
Cuando se agrega una fila o una columna a una tabla de referencias cruzadas, iReport crea una
variable especial que se refiere al valor de la expresin bucket. Tiene el mismo nombre que el
grupo nuevo. Cuando se edita la expresin de un campo de texto de los elementos en una celda,
la expresin editor aparece. Enumera todos los objetos que se pueden mostrar en una celda de
tabla de referencias cruzadas (ver Figura 7-10).

Figura 7-10: Los objetos que se pueden utilizar en una expresin de campo de texto de una tabla cruzada

Cuando se crea un nuevo grupo, iReport crea la nueva celda de encabezado para el grupo; en el
grupo, iReport utiliza un nuevo campo de texto para mostrar el valor del grupo (usando una
variable incorporada que tiene el mismo nombre que el grupo) y se llena la nueva celda con un
campo de texto para que aparezca la primera medida disponible en la tabla de referencias
cruzadas.
Si la posicin total se establece en un valor distinto de Ninguno (por lo general fin), iReport
inserta otras celda como sede de los subtotales. Aquellas celdas se crean vacos, as que de
nuevo debe arrastrar un elemento de campo de texto en cada celda y establecer una adecuada
expresin de los datos a mostrar (ver Figura 7-11).

Figura 7-11: celdas y filas totales vaca

El orden de los grupos se puede cambiar arrastrando en la vista de esquema. Tenga en cuenta
que el diseo de tablas de referencias cruzadas es estrictamente atado a los ajustes de orden de
grupo.

7.2.1 Modificando las celdas


Las Tabla de referencias cruzadas tienen encabezado de celdas, totales de celdas, detalle de
celdas, y celdas sin datos (opcional). Cada interseccin entre una fila y una columna define una
celda. Las celdas pueden contener un conjunto de elementos, tales como campos de texto,
textos estticos, rectngulos y las imgenes, pero no pueden contener un subreporte, un grfico
u otra tabla de referencias cruzadas. La figura 7-11 muestra una tabla de referencias cruzadas
con algunas celdas de color y varios campos de texto.
Puede modificar el color de fondo y los bordes de cada celda: haga clic en la celda que desea
cambiar para mostrar en el men y seleccione Relleno y bordes para modificar los bordes de la
celda (ver Figura 7-12).

Figura 7-12: Modificando bordes de las celdas

El fondo de la celda y el estilo se pueden modificar en la hoja de propiedades cuando se


selecciona un nodo de celda en la vista de esquema (ver Figura 7-13).

Figura 7-13: Estilo y fondo de celda

7.2.2 Comprendiendo las Medidas


Una medida es un objeto similar a una variable. Siempre es, de alguna manera, el resultado de
un clculo realizado en un valor para cada una fila y columna de grupo que se cruzan en una
celda. Expresiones de elementos en una tabla de referencias cruzadas, tales como imprimircuando y expresiones de campos de texto, slo pueden contener medidas. En este contexto, no

se puede utilizar campos, variables o parmetros directamente; Siempre tenga que utilizar una
medida.
Para crear una medida, haga clic en el nodo medidas en la vista de esquema y seleccione Agregar
Medida (ver Figura 7-14). IReport aade la nueva medida a la vista de esquema.

Figura 7-14: Agregar medida

Del mismo modo que cuando se crea un nuevo grupo, que tendr que definir una expresin para
la medida. La forma ms sencilla de mostrar una nueva medida es utilizar un campo de texto.
Arrastre un elemento de campo de texto en una celda y establezca la expresin de campo de
texto adecuado (por ejemplo, con una medida de nombre como $V {Promedio_mercancia}) y la
clase de expresin apropiada para el campo de texto, el cual debe ser coherente con el tipo de
medida.

Hay varias opciones que puede utilizar para establecer una medida. Adems del nombre, clase,
y la expresin, se puede establecer el tipo de clculo. Si los tipos de clculo disponibles no son
suficientes, se puede proporcionar una clase personalizada Incrementador por medio de una
Factory que devuelve una instancia de esa clase (factory debe implementar la interfaz
net.sf.jasperreports.engine.fil.JRIncrementerFactory).

Figura 7-15: Agregar medida

Si desea mostrar su medida como porcentaje general del total, se puede establecer la propiedad
Porcentaje de tipo Gran Total.

Por ltimo, se puede especificar una clase del calculador personalizado para realizar el clculo
de
porcentaje
(la
clase
debe
usar
la
interfaz
net.sf.jasperreports.crosstabs.fill.JRPercentageCalculator).

7.3 Modificacin de las Propiedades de una tabla de


referencias cruzadas
Para ver las propiedades de la tabla de referencias cruzadas en la hoja de propiedades,
seleccione el nodo de la tabla de referencias cruzadas en la vista de esquema (ver Figura 15-16).

Figura 7-16: Propiedades de la tabla cruzada

A continuacin se presenta un breve resumen de algunas de las opciones de este cuadro de


dilogo:
Repetir encabezados de columna
Si se selecciona, los ttulos de las columnas se imprimen en cada pgina cuando la tabla de
referencias cruzadas se extiende por pginas adicionales.
Repetir encabezados de fila
Si se selecciona, los encabezados de fila se imprimen en cada pgina cuando la tabla de
referencias cruzadas se extiende por pginas adicionales.
Salto de columna Offset

Especifica el espacio entre dos trozos de una tabla cruzada cuando la tabla de referencias
cruzadas excede el ancho de pgina (ver Figura 7-17).

Figura 7-17: Salto de columna Offset

7.4 Parmetros en las tablas de referencias cruzadas


Los Parmetros en las tablas de referencias cruzadas pueden usarse en las expresiones de los
elementos que se muestran en la tabla de referencias cruzadas. Pueden ser definidos y
gestionados a travs de la vista de esquema (ver Figura 7-18).

Figura 7-18: Parmetros de la tabla cruzada

Para agregar un parmetro, haga clic en el nodo Parmetros en el elemento de tabla cruzada y
seleccione Agregar parmetros. La expresin de parmetro para un parmetro de tabla de
referencias cruzadas slo puede utilizar los objetos del reporte principal, no desde un sub
conjunto de datos opcional utilizado para alimentar a la tabla de referencias cruzadas. Una vez
ms, estos parmetros estn diseados para ser utilizados en los elementos de tabla de
referencias cruzadas. Ellos no son el mismo que los parmetros de conjunto de datos que se
utilizan en las expresiones, en el contexto tabla de referencias cruzadas, para filtrar una consulta
y calcular los valores.

Puede utilizar el mapa para establecer el valor de los parmetros de referencias cruzadas
declaradas en tiempo de ejecucin. En este caso, tendr que proporcionar expresin de un mapa
de parmetros vlida en las propiedades de referencias cruzadas.

7.5 Trabajar con los datos de las tablas de referencias


cruzadas
Como se mencion anteriormente, puede llenar una tabla de referencias cruzadas con datos del
reporte principal o desde un subconjunto de datos. En este ltimo caso, se
debe especificar el conjunto de datos de gestin en la ventana de datos de la tabla de referencias
cruzadas, al que se accede haciendo clic derecho en el nodo de tabla de referencias cruzadas (o
en el Elemento de tabla de referencias cruzadas en el diseador) y seleccionando la opcin de
men de datos de la tabla de referencias cruzadas (ver Figura 7-19).

Figura 7-19: Datos de la tabla cruzada

La interfaz de la ventana es similar a la utilizada para proporcionar datos para un grfico. El


mecanismo para proporcionar los datos a una tabla de referencias cruzadas es muy similar.
Si los datos estn previamente ordenados, puede seleccionar la opcin de datos pre-ordenados
para acelerar el proceso de llenado.
Puede utilizar Reset Type/Reset Group and Increment Type/Increment Group para definir el
momento para restablecer los datos recopilados o agregar un registro a su conjunto de datos.
La expresin Incremento Cuando es un indicador para determinar si se debe agregar un registro
al conjunto de registros que se alimenta de la tabla. Esta expresin debe devolver un valor
booleano. IReport considera que una cadena en blanco significa agregar todos los registros."

7.6 Uso de las variables totales en las tablas de referencias


cruzadas
Las variables totales de las tablas de referencias cruzadas (ver Figura 7-20) estn incorporadas
en objetos que se pueden usar dentro de expresiones de campos de texto de tablas de

referencias cruzadas para combinar los datos a diferentes niveles de agregacin (por ejemplo,
para calcular un porcentaje). Para cada medida, JasperReports crea variables que almacenan el
valor total de la medida por cada grupo de filas / columnas.

Figura 7-20: Las variables totales se sugieren en el editor de expresiones

El siguiente ejemplo es un reporte simple que muestra el nmero de pedidos enviados en varias
regiones durante varios aos.
La figura 7-21 muestra el diseo de tabla cruzada simple para el ejemplo, y en la figura 7-22
muestra los resultados de la impresin.

Figura 7-21: Layout simple de tabla cruzada

Figura 7-22: Resultado del Layout simple

Para calcular el porcentaje de los pedidos realizados en cada regin y por ao, aadir un campo
de texto con la siguiente expresin Java:
new Double(
$V{ORDERIDMeasure}.doubleValue()
/
$V{ORDERIDMeasure_ORDERDATE_ALL.doubleValue()
)

La frmula bsica para implementar es:


(Nmero de los pedidos realizados en esta regin y en este ao) / (Todas las rdenes enviadas
en esta regin)
Un porcentaje debe ser tratado como un nmero de punto flotante. Por esta razn, extraer los
valores de doble escalares de las medidas ORDERIDMeasure y
ORDERIDMeasure_ORDERDATE_ALL objetos incluso si hay objetos de tipo de clase Entero
(en realidad, un porcentaje deriva de un nmero entre 0 y 1, multiplicado por 100).
Para incluir el valor de la expresin en forma de porcentaje, establezca el valor del atributo de
patrn de campo de texto a #, # # 0,00%.
La figura 7-23 muestra la tabla de referencias cruzadas modificado en la ventana de diseo, y en
la figura 7-24 muestra el resultado final impreso.

Figura 7-23: Un segundo campo se ha aadido en la celda de medida para mostrar el porcentaje

Figura 7-24: Reporte final con porcentajes incluidos

También podría gustarte