2. Estructura de un informe, JasperReports e IReport
Índice de contenidos
‣ Introducción.
‣ Codificación.
‣ Elemento band.
‣ No tener en cuenta una banda.
‣ Las secciones principales.
‣ Añadir o eliminar secciones con iReport.
‣ Agrupando datos.
‣ Agrupando datos con iReport.
Preparado por Jesús Salinas Revelles
3. Estructura de un informe, JasperReports e IReport
Introducción
‣ La plantilla de un informe contiene toda la información relacionada con
la estructura y el aspecto de los documentos que se generarán
posteriormente.
‣ Esta información determina la posición del contenido de los textos,
elementos gráficos, etc.
‣ La forma en la que se agrupan y manipulan los datos también es
definida en la plantilla.
‣ JRXML es el nombre usado para identificar a los ficheros XML que
representan la definición de una plantilla JasperReports
‣ Cuando se trabaja con plantillas JRXML, JasperReports usa su fichero
DTD para validar el contenido XML.
‣ Si el fichero XML pasa las validaciones, significa que cumple la
estructura y sintáxis correcta. El motor será capaz de generar la
versión compilada del informe.
Preparado por Jesús Salinas Revelles
4. Estructura de un informe, JasperReports e IReport
Introducción
‣ DTD que debemos utilizar:
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD
JasperReport //EN" "http://jasperreports.sourceforge.net/dtds/
jasperreport.dtd">
<?xml version="1.0"?> <!DOCTYPE jasperReport PUBLIC "-//
JasperReports//DTD JasperReport //EN" "http://
jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="name_of_the_report" ... >
...
</jasperReport>
Preparado por Jesús Salinas Revelles
6. Estructura de un informe, JasperReports e IReport
Codificación
‣ Cuando se crean plantillas en diferentes idiomas, debemos tener
cuidado con el atributo encoding que puede ser usado en el fichero
XML.
‣ Por defecto, si no se especifica ningún valor, el parser XML utiliza
UTF-8 como codificación.
‣ Esto es importante porque el diseño habitualmente contiene textos
estático.
Preparado por Jesús Salinas Revelles
7. Estructura de un informe, JasperReports e IReport
Codificación
‣ Ejemplo:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE
jasperReport PUBLIC "-//JasperReports//DTD JasperReport //EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="name_of_the_report" ... >
...
</jasperReport>
Preparado por Jesús Salinas Revelles
8. Estructura de un informe, JasperReports e IReport
Elemento band
‣ Cuando se declara el contenido y layout de una sección, se usa el
elemento genérico band.
‣ Como ya hemos visto anteriormente:
...
<background>
!
<band splitType="Stretch"/>
</background>
...
‣ Todas las secciones incorporan un elemento de tipo band para añadir
contentidos en el informe.
Preparado por Jesús Salinas Revelles
9. Estructura de un informe, JasperReports e IReport
Elemento band
‣ Tiene dos atributos:
‣
height: altura de la sección.
‣
splitType: forma en la que se gestiona la posible división en varias páginas.
‣
Stretch: si el contenido no cabe en una página, ocupa la siguiente.
‣
Prevent: contenidos en una página.
‣
Immediante.
Preparado por Jesús Salinas Revelles
10. Estructura de un informe, JasperReports e IReport
Elemento band
‣ Sus elementos hijos se definen aquí:
<!ELEMENT band (printWhenExpression?, (break | line |
rectangle | ellipse | image | staticText | textField |
subreport | pieChart | pie3DChart | barChart | bar3DChart |
xyBarChart | stackedBarChart | stackedBar3DChart| lineChart |
xyLineChart | areaChart | xyAreaChart | scatterChart |
bubbleChart
| timeSeriesChart | highLowChart | candlestickChart |
meterChart | thermometerChart | multiAxisChart |
stackedAreaChart | elementGroup | crosstab | frame)*)>
Preparado por Jesús Salinas Revelles
11. Estructura de un informe, JasperReports e IReport
Elemento band
‣ El atributo height en la declaración de una banda especifica su altura
en pixeles.
‣ Los elementos contenidos en una banda siempre tendrán que encajar
en sus dimensiones. Esto previene potenciales resultados erroneos
cuando se genera un informe.
Preparado por Jesús Salinas Revelles
12. Estructura de un informe, JasperReports e IReport
No tener en cuenta una banda
‣ JasperReport nos permite definir condiciones para no tener en cuenta
una banda en determinadas circunstancias.
‣ Esa condición se introduce mediante la etiqueta
<printWhenExpression>, disponible en cualquier banda de un informe.
‣ Siempre devuelve java.lang.Boolean object o null.
...
<background>
<band splitType="Stretch">
!
<printWhenExpression>
<![CDATA[$F{screenName}==0]]>
</printWhenExpression>
</band>
</background>
...
Preparado por Jesús Salinas Revelles
13. Estructura de un informe, JasperReports e IReport
Las secciones principales
‣ JasperReports trabaja con plantilla que se estructura en diferentes
secciones.
‣ Las secciones son trozos de la plantilla que han sido especificadas
con una altura y una anchura y pueden contener elementos como
líneas, imágenes, etc.
Preparado por Jesús Salinas Revelles
14. Estructura de un informe, JasperReports e IReport
Título
‣ Ésta es la primera sección de un informe. Se genera sólo una vez
durante el proceso de rellenado de datos y representa el inicio del
documento.
‣ Esta sección precede a la sección de cabecera de la página. Para
generar la sección de cabecera antes que la de título debe incluirse
dentro de la de título.
‣ El elemento xml title nos permite definir este concepto:
<title>
!
<band height="132" splitType="Stretch">
!
</band>
</title>
Preparado por Jesús Salinas Revelles
15. Estructura de un informe, JasperReports e IReport
Cabecera de página
‣ El elemento xml pageHeader nos permite definir este concepto.
‣ Esta sección aparece al principio de cada página en el documento
generado.
...
<pageHeader>
!
<band splitType="Stretch"/>
</pageHeader>
...
Preparado por Jesús Salinas Revelles
16. Estructura de un informe, JasperReports e IReport
Cabecera de columna
‣ El elemento xml columnHeader nos permite definir este concepto.
‣ Esta sección aparece al principio de cada página en el documento
generado.
...
<columnHeader>
!
<band height="26" splitType="Stretch">
!
!
<staticText>
</band>
</columnHeader>
...
Preparado por Jesús Salinas Revelles
17. Estructura de un informe, JasperReports e IReport
Detalle
‣ El motor intenta generar para cada elemento asociado a la fuente de
datos esta sección.
‣ El elemento xml detail nos permite definir este concepto:
...
<detail>
<band height="18" splitType="Stretch">
</band>
</detail>
...
Preparado por Jesús Salinas Revelles
18. Estructura de un informe, JasperReports e IReport
Pie de columna
‣ Esta sección aparece al final de cada columna en el documento
generado.
‣ El elemento xml columnFooter nos permite definir este concepto:
...
<columnFooter>
<band height="7" splitType="Stretch">
!
...
</band>
</columnFooter>
...
Preparado por Jesús Salinas Revelles
19. Estructura de un informe, JasperReports e IReport
Pie de página
‣ Esta sección aparece al final de cada página en el documento
generado.
‣ El elemento xml pageFooter nos permite definir este concepto:
...
<pageFooter>
<band height="7" splitType="Stretch">
!
...
</band>
</pageFooter>
...
Preparado por Jesús Salinas Revelles
20. Estructura de un informe, JasperReports e IReport
Resumen
‣ Esta sección se genera una sola vez y aparece al final del documento
generado.
‣ Pero no tienen que ser necesariamente la última sección. En
determinadas ocasiones, el pie de columna y/o de página puede
generarse posteriormente.
‣ El resumen puede generarse en una página independiente si el atributo
isSummaryNewPage está a true.
Preparado por Jesús Salinas Revelles
21. Estructura de un informe, JasperReports e IReport
Pie de página para la última página
‣ Esta sección aparece al final de la última página en el documento
generado.
‣ El elemento xml lastPageFooter nos permite definir este concepto:
...
<lastPageFooter>
<band height="7" splitType="Stretch">
!
...
</band>
</lastPageFooter>
...
Preparado por Jesús Salinas Revelles
22. Estructura de un informe, JasperReports e IReport
Background de la plantilla
‣ Esta es una sección especial que se genera para todas las páginas y el
contenido dentro de esta sección se renderiza por debajo de los
elementos en las secciones normales.
‣ El elemento background se encarga de modelar este concepto.
...
<background>
!
<band splitType="Stretch"/>
</background>
...
Preparado por Jesús Salinas Revelles
23. Estructura de un informe, JasperReports e IReport
Añadir o eliminar secciones con iReport
‣ La herramienta iReport nos permite añadir o eliminar secciones dentro
de nuestra plantilla de una forma rápida y sencilla:
Preparado por Jesús Salinas Revelles
24. Estructura de un informe, JasperReports e IReport
Agrupando datos
‣ Los grupos representan una forma flexible de organizar los datos
dentro un informe. Un grupo no es más que un conjunto de registros
consecutivos que tienen algo en común, por ejemplo, el valor de un
determinado campo.
‣ Un grupo está formado por tres componentes:
‣
Expresión de grupo.
‣
Sección de cabecera de grupo.
‣
Sección de pie de grupo.
Preparado por Jesús Salinas Revelles
25. Estructura de un informe, JasperReports e IReport
Agrupando datos
‣ El valor de la expresión de grupo es lo que hace que los registros de un
grupo se mantengan juntos. Ese es el valor que tienen en común.
‣ Cuando el valor de la expresión de grupo cambia durante la iteración
sobre la fuente de datos, se produce una ruptura en el grupo,
añadiendo las secciones <groupFooter> y <groupHeader>
correspondientes al documento final.
‣ Se pueden definir tanto grupos como se desee en un informe, ahora
bien, el orden en el que aparecen es importante dado que unos
contienen a otros. Uno grupo contiene al siguiente. Cuando el grupo
más grande encuentra una ruptura, todos los demás son inicializados.
Preparado por Jesús Salinas Revelles
26. Estructura de un informe, JasperReports e IReport
Agrupando datos
‣ IMPORTANTE:
‣
La agrupación de datos funciona como esperamos solo si los registros se
encuentran ordenados de acuerdo con las expresiones de grupo definidas en el
informe.
‣
Por ejemplo, si quieres agrupar productos a partir del pais y ciudad de procedencia,
el motor espera encontrar los registros ordenados por pais y por ciudad.
‣
Si no están ordenados, los registros no se agruparán adecuadamente,
JasperReports no ordena los registros antes de usarlos.
Preparado por Jesús Salinas Revelles
27. Estructura de un informe, JasperReports e IReport
Agrupando datos
‣ Sintaxis:
<!ELEMENT group (groupExpression?, groupHeader?, groupFooter?)>
<!ATTLIST group name CDATA #REQUIRED
isStartNewColumn (true | false) "false"
isStartNewPage (true | false) "false"
isResetPageNumber (true | false) "false"
isReprintHeaderOnEachPage (true | false) "false"
minHeightToStartNewPage NMTOKEN "0"
>
<!ELEMENT groupExpression (#PCDATA)>
<!ELEMENT groupHeader (band?)>
<!ELEMENT groupFooter (band?)>
Preparado por Jesús Salinas Revelles
28. Estructura de un informe, JasperReports e IReport
Agrupando datos
‣ La creación de un grupo dentro de un informe permite al usuario, crear
secciones de cabecera y pie para dicho grupo:
Preparado por Jesús Salinas Revelles
29. Estructura de un informe, JasperReports e IReport
Agrupando datos con iReport
‣ El procedimiento es muy simple, seleccionando el informe y mediante
el botón derecho acceder a la opción Add Report Group:
Preparado por Jesús Salinas Revelles
30. Estructura de un informe, JasperReports e IReport
Agrupando datos con iReport
‣ Una vez hecho esto, accedemos a un asistente que nos guía en el
procedimiento de creación:
Preparado por Jesús Salinas Revelles
31. Estructura de un informe, JasperReports e IReport
Agrupando datos con iReport
‣ Y finalmente se decide añadir o no nuevas secciones para este grupo:
Preparado por Jesús Salinas Revelles