estructura de un informe en jasperreports

31
Reporting con Jasper Reports e IReport Estructura de un informe

Upload: ematiz-tecnologia-sl

Post on 13-Jun-2015

4.876 views

Category:

Documents


1 download

DESCRIPTION

Pasamos a describir a continuación los elementos importantes que debemos manejar para conocer la estructura de un informe en JasperReports.

TRANSCRIPT

Page 1: Estructura de un informe en JasperReports

Reporting con Jasper Reports e IReport

Estructura de un informe

Page 2: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

Í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.

Page 3: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 4: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>

Page 5: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

Introducción

‣ También podemos utilizar esquema XML:

<?xml version="1.0" encoding="UTF-8"?><jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Java5Report" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="50" bottomMargin="50" uuid="62ca22c3-c77f-4b17-a8fc-4880078f1205">! <property name="ireport.zoom" value="1.0"/>! <property name="ireport.x" value="0"/>! <property name="ireport.y" value="96"/>

Page 6: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 7: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>

Page 8: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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:

‣ Todas las secciones incorporan un elemento de tipo band para añadir contentidos en el informe.

...<background>! <band splitType="Stretch"/></background>...

Page 9: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 10: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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)*)>

Page 11: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 12: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 13: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 14: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>

Page 15: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 16: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 17: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 18: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 19: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 20: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 21: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 22: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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>...

Page 23: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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:

Page 24: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 25: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 26: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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.

Page 27: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

Agrupando datos

‣ Sintaxis:

<!ELEMENT group (groupExpression?, groupHeader?, groupFooter?)>

<!ATTLIST group name CDATA #REQUIREDisStartNewColumn (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?)>

Page 28: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

Agrupando datos

‣ La creación de un grupo dentro de un informe permite al usuario, crear secciones de cabecera y pie para dicho grupo:

Page 29: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

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:

Page 30: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

Agrupando datos con iReport

‣ Una vez hecho esto, accedemos a un asistente que nos guía en el procedimiento de creación:

Page 31: Estructura de un informe en JasperReports

Estructura de un informe, JasperReports e IReport

Preparado por Jesús Salinas Revelles

Agrupando datos con iReport

‣ Y finalmente se decide añadir o no nuevas secciones para este grupo: