• No se han encontrado resultados

Generación de Informes. Programación. Práctica 9

N/A
N/A
Protected

Academic year: 2022

Share "Generación de Informes. Programación. Práctica 9"

Copied!
64
0
0

Texto completo

(1)

Generación de Informes

i í d l

Ingeniería de la Programación g

Práctica 9

(2)

• JasperReport: librería Java para el desarrollo de informes

• iReport: Herramienta para el diseño visual de informes JasperReport

Aplicación Java

Di ñ I f (Eclipse)

Diseño Informe (iReport)

Informe jasper JasperReport.jar

2

Informe.jasper p p j

Conexión Java-JasperReport

(3)

Contenido

ƒ iReport

é

„

¿Qué es iReport?

„

Primeros pasos

Configuración

‡ Configuración

‡ Crear Conexión JDBC

‡ Uso del Asistente

„

Aspectos Avanzados en el Diseño de Informes

‡ Informes parametrizados S bi f

‡ Subinformes

ƒ JasperReport

¿Q é e J pe Repo t?

„

¿Qué es JasperReport?

„

Configuración de eclipse

„

Visualizando informes desde java

„

Visualizando informes desde java

(4)

iReport

¿Qué es iReport?

4

(5)

iReport -¿Qué es iReport?

Utilidad Opensource para crear informes

• Implementado 100% en Java

• Genera informes JasperReports

• Editor WYSIWYG (What You See Is What You Get)

• Soporta todas las bases de datos accesibles por JDBC Sun Java 2 SDK 1 4 o superior

•. Sun Java 2 SDK 1.4 o superior

(6)

iReport -¿Qué es iReport?

ƒ Proyecto IReport:

„ http://sourceforge.net/projects/ireportp // g /p j / p

ƒ Descarga Binarios:

„ http://sourceforge.net/project/showfiles.php?group_id=64348

T t i l (E i lé )

ƒ Tutoriales (En inglés):

„ http://sourceforge.net/docman/?group_id=64348

ƒ Foros de Ayuda (En inglés. Es necesario registrarse)

„ http://sourceforge net/forum/forum php?forum id=217623

„ http://sourceforge.net/forum/forum.php?forum_id=217623

„ http://sourceforge.net/forum/forum.php?forum_id=217622

6

(7)

iReport

Primeros Pasos

(8)

iReport - Primeros pasos

ƒ Configuración

„

Menu Options >Opciones

„

Menu Options->Opciones

8

(9)

iReport - Primeros pasos

ƒ Configuración

3 4 2

1

1. Propiedades del entorno 1. Propiedades del entorno

• Indicamos el Look & feel, idioma, opciones por defecto, etc

2 Directorios del compilador 2. Directorios del compilador

• Directorio donde se encuentra el compilador de informes, donde se almacenan los informes generados etc

donde se almacenan los informes generados, etc.

3. Opciones de Backup

9

4. Programas externos

(10)

iReport - Primeros pasos

ƒ Configuración

„

Directorio de Compilación

„

Directorio de Compilación

Indica donde se Indica donde se

guardan los ficheros

*.jasper

(importante saberlo porque luego se

cargan desde Java)

10

(11)

iReport - Primeros pasos

ƒ Conexión con Hibernate

„

Data > Conexiones / Fuentes de datos

„

Data -> Conexiones / Fuentes de datos

(12)

iReport – Primeros pasos

ƒ Crear la conexión a la fuente de datos

„

1º Creamos la conexión

„

1 Creamos la conexión

‡ Conexión JDBC

Segundo: Nombre de g la Conexión y URL

Primero:

Conexión BD JDBC

Tercero: probar la conexión

12

Conexión BD JDBC

(13)

iReport - Primeros pasos

ƒ Crear la Conexión a la fuente de datos

„

1º Creamos la Conexión

„

1º Creamos la Conexión

‡ Conexión Hibernate

2º: Nombre de la conexión

1º: Tipo:

Conexión Hibernate Conexión Hibernate

(14)

iReport - Primeros pasos

ƒ Crear Conexión Hibernate

„

2º Modificamos el Classpath p

Incluimos:

-la librería hsqldb.jar

Di t i 'd t ' d d t l bd d h lbd -Directorio 'data' donde se encuentra la bd de hsqlbd Si es una conexión Hibernate añadir además los paths:

Directorio de archivos fuentes (src) de nuestro proyecto

14

Directorio de archivos binarios (bin) Directorio donde están los mappings

Directorio donde está el archivo hibernate.cfg.xml

(15)

iReport - Primeros pasos

ƒ Crear Conexión Hibernate

„

3º Reemplazamos la librería de conexión

HSQLDB i IR t

a HSQLDB que viene en IReport IREPORT\lib\hsqldb 1 7 1 jar IREPORT\lib\hsqldb-1.7.1.jar Por la que viene con HSQLDB:

Por la que viene con HSQLDB:

HSQLDB\lib\hsqldb.jar HSQLDB\lib\hsqldb.jar

Manteniendo el nombre existente (hsqldb- ( q

1.7.1.jar)

(16)

iReport - Primeros pasos

ƒ Primer informe: Uso del Asistente

„

iReport proporcina un asistente que nos facilita la

„

iReport proporcina un asistente que nos facilita la creación de informes sencillos

„

Fichero-> Mago de Informes

„

Fichero > Mago de Informes

„

5 pasos:

„

5 pasos:

ƒ 1º Seleccionar conexión y definir consulta SQL

ƒ 2º Seleccionar camposp

ƒ 3º Indicar si se agrupa por algún campo

ƒ 4º Definir apariencia (Layout)

ƒ 5º Finalizar asistente

„

Nota: Antes recuerde arrancar el HSQLDB

16

„

Nota: Antes, recuerde arrancar el HSQLDB

(17)

iReport - Primeros pasos

ƒ Primer informe: Uso del Asistente

1º Seleccionar conexión y definir consulta SQL

1º:Nombre de la Conexión la Conexión

2º C l 2º:Consulta

SQL

(18)

iReport - Primeros pasos

ƒ Primer informe: Uso del Asistente

2º Seleccionar campos

3º Indicar si se agrupa por algún campo 3 Indicar si se agrupa por algún campo

Atributos de Atributos que

18

Atributos de

la consulta aparecen en el informe

(19)

iReport - Primeros pasos

ƒ Primer informe: Uso del Asistente

4º Definir apariencia (Layout) Columna: para cada registro un campo bajo de otro

T b l d i

5º Finalizar asistente

Tabular: para cada registro un campo al lado del otro

5 Finalizar asistente

Plantilla para los aspectos estéticos

(20)

iReport - Primeros pasos

ƒ Primer informe: Uso del Asistente

„

Al finalizar obtenemos el diseño del informe

„

Al finalizar obtenemos el diseño del informe

20

(21)

iReport - Primeros pasos

ƒ Primer informe: Uso del Asistente

„

Para visualizar el informe:

„

Para visualizar el informe:

‡ Construir -> Ejecutar informe (usando conexión activa)

‡ Guardará además el diseño en un documento xml

‡ Guardará además el diseño en un documento xml

(22)

iReport - Primeros pasos

ƒ Primer report: con Conexión Hibernate

1º Seleccionar la fuente de datos y definir una consulta HQL

1º: Conexión Hibernate

2º: consulta HQL

22

(23)

iReport - Primeros pasos

ƒ Primer report: con Conexión Hibernate

P d i bi l ti bá i

ƒ Puede ser necesario cambiar los tipos básicos por

clases (p.e. int Æ java.lang.Integer)

(24)

iReport

Aspectos Avanzados en el Diseño de Informes

24

(25)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Crear un informe nuevo:

„

Fichero -> nuevo documento

Nombre del informe

„

Fichero -> nuevo documento

•Tamaño del papel

•OrientaciónOrientación

•Márgenes, columnas, etc.

Modificar Propiedades: Editar -> Propiedades del Informe

(26)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Definer la consulta a la BD: Datos -> Consulta de informe

de informe

„ Escriba una consulta SQL y pulse 'Leer Campos' para ejecutarl

Consulta

26

SQL

(27)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ También puede construir la consulta en el Diseñador de Consultas

.

(28)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Consultas en conexiones Hibernate:

4º S l i l 4º Seleccionamos los atributos a incluir en el

informe, pudiendo d 1º Creamos Consulta

HQL

navegar a través de aquellos que sean objetos HQL

2º La ejecutamos

3º Borramos atributos

28

(29)

iReport - Aspectos Avanzados en el Diseño de Informes

Archivos

Abiertos Ventana de

propiedades

Estructura del Documento Librería de

(Elementos definidos) Elementos

(30)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Cada informe se divide en 7 secciones:

30

(31)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Cada informe se divide en 7 secciones (bandas):

„ 1. Título: Define el título del informe. Se imprime una única vez al inicio del informe. Puede imprimirse en una página p p g separada.

2 Cabecera de Página: Define una cabecera para las

„ 2. Cabecera de Página: Define una cabecera para las

páginas del informe. Se imprime una vez por página. Todas las páginas del informe presentan la misma cabecera de

á

página.

„ 3 Cabecera de Columna: Define la cabecera de cada una

„ 3. Cabecera de Columna: Define la cabecera de cada una de las columnas de la sección detalle. Generalmente, se usa para indicar el nombre de los atributos listados en la sección

‘detalle’detalle .

(32)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Cada informe se divide en 7 secciones (bandas):

„ 4. Detalle: en esta sección se define el diseño con el que se muestra cada registro de la base de datos. Se imprime

i

tantas veces como registros se recuperen.

„ 5 Pie de Columna: Esta sección aparece al final de cada

„ 5. Pie de Columna: Esta sección aparece al final de cada columna definida en la sección detalle.

„ 6. Pie de Página: Esta sección aparece al final de cada página del informe.

„ 7. Resumen: Esta sección aparece al final del informe.

Generalmente se usa para presentar información resumida o ibl d t t dí ti

32

posibles datos estadísticos.

(33)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Elementos de un Informe:

„

Elementos Gráficos:

„

Elementos Gráficos:

‡ Línea: dibuja una línea en el informe

‡ Cuadrado: dibuja un cuadrado en el informe

‡ Cuadrado: dibuja un cuadrado en el informe

‡ Elipse: dibuja una elipse en el informe

„

Elementos de Texto:

‡ Texto estático: muestra un texto estático en el informe

‡ Campo de texto: muestra el texto obtenido a partir de una expresión java

expresión java

„

Sub-Informes: incluye un informe ya existente

„

Elementos Especiales:

„

Elementos Especiales:

‡ Código de barras: genera un código de barras

‡ Gráficas: permite crear una gráfica de datos

‡ Gráficas: permite crear una gráfica de datos

(34)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Elementos de un Informe:

Elipse

Campo d T t

Código de Barras Elipse de Texto Barras

Gráfica Línea

Cuadrado Texto Estático

Imagen Marco

SubInforme Estático

34

(35)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Campos de Texto:

muestra el texto obtenido a partir de una expresión javap j

„

String

„

Resultado de Operaciones Matemáticas Resultado de Operaciones Matemáticas

„

Valor devuelto por funciones Java

„

Parámetros o Variables

„

Parámetros o Variables

„

Campos de la conexión de datos

Nos permite visualizar la información íd d l b d d

extraída de la base de datos.

(36)

iReport - Aspectos Avanzados en el Diseño de Informes

Propiedades del

Campo de Texto Expresión Java p

Campo de BD:

$F{NombreCampo}

$F{NombreCampo}

Seleccionar de la Lista

TextField->Expression

36

(37)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Campos de Texto

„ Se pueden añadir campos de texto asociados a campos p p p de la BD, Parámetros y Variables arrastrando a la zona de diseño los elementos de la Librería

(38)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Ejemplo:

Título Título Cabecera de Página de Página Detalle

Pie de Página Página

38

(39)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Ejemplo:

C b d

Titulo Cabecera de

Página

Detalle

Pie

(40)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Ejemplo:

Campos de Texto

Texto Estático Líneas

Asociados a la BD

Campos de Texto Campos de Texto Asociados a

40

p

Asociados a Variables p

Funciones Java

(41)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Ejemplo:

Líneas Texto Estático

Campos de Texto Asociados a la BD

Campos de Texto

Campos de Texto

Asociados a Variables Asociados a

Funciones Java

(42)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Parámetros:

Son valores enviados al informe desde un programa externo

ƒ Definición:

„

Menú Contextual Estructura del

Documento:

‡

add-> Parameter

42

(43)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Parámetros:

Se suelen utilizar para parametrizar la consulta SQL asociada a la fuente de datos

asociada a la fuente de datos

$P {NombreParámetro}

(44)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Variables:

Son objetos usados para almacenar el resultado de calculos como subtotales, sumas, etc.

ƒ Definición:

„

Menú Contextual Estructura del Documento :

‡

add-> Variable

Nombre de la Variable

Tipo de la Variable

44

(45)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Variables: Existen Variables Predefinidas

PAGE NUMBER: número de páginas del informe PAGE_NUMBER: número de páginas del informe COLUMN_NUMBER: número de columnas

REPORT_COUNT: número de registros por la consulta asociada al origen de datos

PAGE_COUNT: número de registros mostrados en la página actual COLUMNS COUNT: número de registros mostrados en la columna COLUMNS_COUNT: número de registros mostrados en la columna actual

ƒ Acceso al Valor de una Variable: Acceso al Valor de una Variable:

Campo de Texto -> $V {NombreVariable}

(46)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Ejemplo:

f P li l h from Pelicula p where

p.genero.nombregenero=${GENERO}

46

(47)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Subinformes

„

Se utilizan para crear diseños Maestro Detalle a

„

Se utilizan para crear diseños Maestro-Detalle a partir de relaciones 1 a muchos

„

Ejemplo:

„

Ejemplo:

Director (Maestro)

Lista de Peliculas (Detalle)

( )

(48)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Subinformes

„

Se crean dos informes por separado

„

Se crean dos informes por separado

‡ Uno para el detalle

‡ Otro para el maestro

‡ Otro para el maestro

„

La consulta del informe detalle se define La consulta del informe detalle se define parametrizada

from Pelicula p where p.genero.nombregenero =

$P{GENERO}

„

Se incluye el detalle como subinforme del maestro y se le pasa el parámetro correspondiente

48

y se le pasa el parámetro correspondiente

(49)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Subinformes

„ Para incluir un informe como subinforme se crea un

„ Para incluir un informe como subinforme se crea un

componente subinforme dentro de la sección detalle del maestro

„ Seleccionamos “usar un informe existente”

„ Seleccionamos el fichero correspondiente al informe detallep

„ Pulsamos en Siguiente

(50)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Subinformes

„ Indicamos que se utilice para el subinforme la misma

„ Indicamos que se utilice para el subinforme la misma conexión que se utiliza en el informe maestro

„ Pulsamos en Siguiente

50

(51)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Subinformes

„ Indicamos la expresión definida en el maestro que se va a

„ Indicamos la expresión definida en el maestro que se va a utilizar para dar valor al parámetro definido en el

subinforme

P l T i

„ Pulsamos en Terminar

Expresión en el Maestro

P á

Parámetro

subinforme

(52)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Subinformes

„ Una última modificación manual necesaria para que se

„ Una última modificación manual necesaria para que se visualicen los subinformes

new HashMap($P{REPORT PARAMETERS MAP}) _ _

boton derecho->

P i d d Propiedades

52

(53)

iReport - Aspectos Avanzados en el Diseño de Informes

ƒ Subinformes en relaciones muchos-a- muchos

muchos

„ La consulta en el subinforme debe cambiarse.

„ Por ejemplo, para listar todas las películaspor director j p , p p p (desde la relación Pelicula-Director):

‡ Consulta en el informe Maestro:

from Director d from Director d

‡ Lista de campos de Director: iddirector, nombre

‡ Consulta en el subinforme:

from Pelicula p where $P{NOMBRE} IN p directores nombre from Pelicula p where $P{NOMBRE} IN p.directores.nombre

‡ Lista de campos de Pelicula: titulo, fecha

Aquí directores es el conjunto definido en la clase Pelicula que guarda Aquí, directores es el conjunto definido en la clase Pelicula que guarda

las instancias de directores de una película.

(54)

JasperReport

¿Qué es JasperReport?

54

(55)

JasperReport - ¿Qué es JasperReport?

ƒ Librería Java para la creación de informes

ƒ OpenSource

ƒ Generación de informes en archivos PDF, HTML, XLS, CSV y XML.

ƒ Se pueden utilizar diversos orígenes de datos:

JDBC TableModels JavaBeans XML Hibernate JDBC, TableModels, JavaBeans XML, Hibernate, and CSV.

ƒ Puede ser incluida en cualquier proyecto Java

(incluyendo J2EE y Aplicaciones Web)

(56)

JasperReport - ¿Qué es JasperReport?

ƒ Documentación y Libreria (Registrado):

„

http://jasperforge org/sf/projects/jasperreports

„

http://jasperforge.org/sf/projects/jasperreports

ƒ API:

„

http://jasperreports.sourceforge.net/api/

56

(57)

JasperReport

Configuración de Eclipse

(58)

JasperReport - Configuración de Eclipse

ƒ Incluir la librería JasperReport en el proyecto Eclipse

„ jasperreports-1.2.2.jar

ƒ Project ->Properties ->Java Build Path-> Libraries

58

(59)

JasperReport - Configuración de Eclipse

ƒ Incluir además las siguientes librerías:

„ Jakarta Commons Digester Component (versión 1.1 o posterior)

posterior)

http://jakarta.apache.org/commons/digester/

commons-digester.jar

„ Jakarta Commons BeanUtils Component (versión 1.1 o posterior)

http://jakarta.apache.org/commons/beanutils/

b il j commons-beanutils.jar

„ Jakarta Commons Collections Component (versión 1.0 o posterior)

posterior)

http://jakarta.apache.org/commons/collections/

commons-collections.jar

„ Jakarta Commons Logging Component (versión 1.0 o posterior) http://jakarta.apache.org/commons/logging/

commons-logging.jar commons logging.jar

(60)

JasperReport

Visualizando informes desde Hibernate

60

(61)

JasperReport - Visualizando informes desde Hibernate

ƒ La comunicación entre IReport y JasperReport se lleva a cabo a través de un conjunto de parámetros definidos en un objeto HashMap

HashMap

ƒ Cuatro Pasos

1. Creación de Objetos

Session sesion=

UtilidadHibernate getSessionFactory() openSession();

ó á

UtilidadHibernate.getSessionFactory().openSession();

HashMap parametros = new HashMap();

2. Definición de Parámetros

// Obligatorio: Pasamos la fuente de datos (sesión Hibernate) parametros put(JRHibernateQueryExecuterFactory PARAMETER

parametros.put(JRHibernateQueryExecuterFactory.PARAMETER_

HIBERNATE_SESSION,sesion);

// Opcionales: parámetros del informe

// p p

parameterMap.put("genero","Comedia");

(62)

JasperReport - Visualizando informes desde Hibernate

3. Paso de Parametros al informe

String fileName= "reports/ReportParametros jasper";

String fileName= "reports/ReportParametros.jasper";

JasperPrint informe=

JasperFillManager.fillReport(fileName,

parameterMap);

4. Visualización del Informe

parameterMap);

JasperViewer.viewReport(informe, false);

62

(63)

JasperReport - Visualizando informes desde java

ƒ Ejemplo Completo (ejecuta el informe de la página 46)

..

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory;

import net.sf.jasperreports.view.JasperViewer;

import net.sf.jasperreports.engine.JRException;

..

JasperPrint informe = null;

Session sesion= UtilidadHibernate.getSessionFactory().openSession();

HashMap parametros = new HashMap();

parametros.put(JRHibernateQueryExecuterFactory.

PARAMETER_HIBERNATE_SESSION,sesion);

parametros.put("genero","Comedia");

try {

String fileName= "reports/ReportParametros.jasper";

informe= JasperFillManager.fillReport(fileName, parametros);

}

catch (JRException e){e.printStackTrace();}

(64)

JasperReport - Visualizando informes desde java

Para obtener más información consultar el API de las siguientes clases:

JRHibernateQueryExecuterFactory:

http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/qu http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/qu ery/JRHibernateQueryExecuterFactory.html

JasperReport:

http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/Jas http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/Jas perReport.html

JasperFillManager:

http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/Jas http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/Jas perFillManager.html

JasperPrint:

http://jasperreports sourceforge net/api/net/sf/jasperreports/engine/Jas http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/Jas perPrint.html

JasperViewer:

http://jasperreports sourceforge net/api/net/sf/jasperreports/view/JRVie

64

http://jasperreports.sourceforge.net/api/net/sf/jasperreports/view/JRVie wer.html

Referencias

Documento similar

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

"No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Sanz (Universidad Carlos III-IUNE): "El papel de las fuentes de datos en los ranking nacionales de universidades".. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,