Manual de IReport v10.1.0.0
Manual de IReport v10.1.0.0
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
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
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).
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).
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
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.
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. 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.
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.
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:
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).
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.
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.
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.
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.
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.
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.
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.
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
Herramienta
Descripcin
Alinear izquierda
Seleccin
Mltiple
Alinear a la derecha
Alinear arriba
Alinear abajo
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
Centrar en el fondo
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
Adaptarse al ancho
del padre
Adaptarse al alto de
los padres
Organizar como una
tabla
Seleccin
Mltiple
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.
Tipo de Posicin
FixRelativeToTop
Float
FixRelativeToBottom
Tipo de Estiramiento
NoStretch
RelativeToBandHeight
RelativeToTallestObject
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)
.
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.
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
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).
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.
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.
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).
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.
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
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).
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)
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.
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).
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
Menor
Mayor
Desviacin Estndar
Varianza
System *
Restablecer tipo
Descripcin
Ninguno
Reporte
Pgina
Columna
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
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
REPORT_COUNT
PAGE_COUNT
COLUMN_COUNT
<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
Descripcin
Ejemplo
+
-
Suma (que puede ser utilizado para sumar dos nmeros o para A + B
concatenar dos cadenas)
Resta
A-B
Divisin
A/B
A% B
||
Operador booleano OR
A||B
&&
A && B
==
Igual *
A == B
!=
No es igual *
A != B
!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 }
$ V {nombre_variable }
$ P {name_parameter}
$ P !{ nombre_parametro}
$ 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
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.
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.)
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.
Para aplicar una condicin a un estilo, haga clic en el nodo de estilo y seleccione Agregar Estilo
condicional (vea la Figura 4-4).
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.
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.
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
Ejecute el informe. Los resultados deben ser exactamente lo que se presenta en la Figura 4-5.
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.
La parte obligatoria se hace ahora, para que pueda proceder a la adicin de algunos grficos
para conseguir una plantilla completa.
Vamos a tratar de crear un archivo con la nueva plantilla. La nueva plantilla aparece 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:
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
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.
En primer lugar, echemos un vistazo a cmo se establecen los parmetros del subreporte.
Explicacin
net.sf.jasperreports.engine.JasperReport
java.io.InputStream
java.net.URL
un
objeto
java.io.File
java.lang.String
+ subreporte.jasper
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.
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
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).
4. Pruebe el reporte haciendo clic en el botn Vista previa. Usted debe obtener algo similar a la
Figura 5-6.
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.
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:
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.
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.
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.
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.
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.
3. Haga clic en el botn Agregar para crear el nuevo valor de retorno y aparecer el dilogo
Agregar/Modificar variable (Figura 5-14).
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
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.
La expresin de subreporte se utiliza para hacer referencia al archivo Jasper del subreporte. El
asistente le permite hacer esto de dos maneras:
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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:
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.
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).
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.
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.
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).
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).
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).
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.
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.
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.
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()
)
Figura 7-23: Un segundo campo se ha aadido en la celda de medida para mostrar el porcentaje