Вы находитесь на странице: 1из 64

Generacin de Informes

Ingeniera i de d la l g Programacin
Prctica 9

JasperReport: librera Java para el desarrollo de informes iReport: Herramienta para el diseo visual de informes JasperReport

Diseo Di Informe I f (iReport)

Aplicacin Java (Eclipse)

Informe jasper Informe.jasper

JasperReport.jar p p j
2

Conexin Java-JasperReport

Contenido
iReport

Qu es iReport? Primeros pasos


Configuracin Crear Conexin JDBC Uso del Asistente Informes parametrizados S bi f Subinformes

Aspectos Avanzados en el Diseo de Informes


JasperReport

Qu Q e es JasperReport? J pe Repo t? Configuracin de eclipse Visualizando informes desde java


3

iReport
Qu es iReport?

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 1.4 4 o superior

iReport -Qu es iReport?


Proyecto IReport:

http://sourceforge.net/projects/ireport p // g /p j / p

Descarga Binarios:

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

Tutoriales T t i l (E (En ingls): i l )


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

Foros de Ayuda (En ingls. 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

iReport
Primeros Pasos

iReport - Primeros pasos


Configuracin

Menu Options->Opciones Options >Opciones

iReport - Primeros pasos


Configuracin

1. Propiedades del entorno


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

2 Directorios del compilador 2.


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

3. Opciones de Backup 4. Programas externos


Podemos utilizar otros programas para visualizar informes
9

iReport - Primeros pasos


Configuracin

Directorio de Compilacin

Indica donde se guardan los ficheros *.jasper (importante saberlo porque luego se cargan desde Java)

10

iReport - Primeros pasos


Conexin con Hibernate

Data -> > Conexiones / Fuentes de datos

11

iReport Primeros pasos


Crear la conexin a la fuente de datos

1 Creamos la conexin 1

Conexin JDBC

Segundo: g Nombre de la Conexin y URL

Primero: Conexin BD JDBC

Tercero: probar la conexin


12

iReport - Primeros pasos


Crear la Conexin a la fuente de datos

1 Creamos la Conexin

Conexin Hibernate

2: Nombre de la conexin

1: Tipo: Conexin Hibernate


13

iReport - Primeros pasos


Crear Conexin Hibernate

2 Modificamos el Classpath p

Incluimos: -la librera hsqldb.jar -Directorio Di t i 'data' 'd t ' donde d d se encuentra t la l bd de d hsqlbd h lbd Si es una conexin Hibernate aadir adems los paths: Directorio de archivos fuentes (src) de nuestro proyecto Directorio de archivos binarios (bin) Directorio donde estn los mappings Directorio donde est el archivo hibernate.cfg.xml

14

iReport - Primeros pasos


Crear Conexin Hibernate

3 Reemplazamos la librera de conexin a HSQLDB que viene i en IR IReport t IREPORT\lib\hsqldb 1 7 1 jar IREPORT\lib\hsqldb-1.7.1.jar Por la que viene con HSQLDB: HSQLDB\lib\hsqldb.jar Manteniendo el nombre existente (hsqldb( q 1.7.1.jar)

15

iReport - Primeros pasos


Primer informe: Uso del Asistente

iReport proporcina un asistente que nos facilita la creacin de informes sencillos Fichero-> Fichero > Mago de Informes 5 pasos:
1 2 3 4 5 Seleccionar conexin y definir consulta SQL Seleccionar campos p Indicar si se agrupa por algn campo Definir apariencia (Layout) Finalizar asistente

Nota: Antes, Antes recuerde arrancar el HSQLDB


16

iReport - Primeros pasos


Primer informe: Uso del Asistente
1 Seleccionar conexin y definir consulta SQL

1:Nombre de la Conexin

2:Consulta 2 C l SQL

17

iReport - Primeros pasos


Primer informe: Uso del Asistente
2 Seleccionar campos

3 Indicar si se agrupa por algn campo 3

Atributos de la consulta

Atributos que aparecen en el informe

18

iReport - Primeros pasos


Primer informe: Uso del Asistente
4 Definir apariencia (Layout) Columna: para cada registro un campo bajo de otro Tabular: T b l para cada d registro i un campo al lado del otro 5 Finalizar asistente 5

Plantilla para los aspectos estticos


19

iReport - Primeros pasos


Primer informe: Uso del Asistente

Al finalizar obtenemos el diseo del informe

20

iReport - Primeros pasos


Primer informe: Uso del Asistente

Para visualizar el informe:


Construir -> Ejecutar informe (usando conexin activa) Guardar adems el diseo en un documento xml

21

iReport - Primeros pasos


Primer report: con Conexin Hibernate
1 Seleccionar la fuente de datos y definir una consulta HQL

1: Conexin Hibernate

2: consulta HQL
22

iReport - Primeros pasos


Primer report: con Conexin Hibernate
P Puede d ser necesario i cambiar bi los l tipos ti b bsicos i por clases (p.e. int java.lang.Integer)

23

iReport
Aspectos Avanzados en el Diseo de Informes

24

iReport - Aspectos Avanzados en el Diseo de Informes Crear un informe nuevo:


Fichero -> nuevo documento

Nombre del informe

Tamao del papel Orientacin Orientacin Mrgenes, columnas, etc.


Modificar Propiedades: Editar -> Propiedades del Informe 25

iReport - Aspectos Avanzados en el Diseo de Informes Definer la consulta a la BD: Datos -> Consulta de informe

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

Consulta SQL
26

iReport - Aspectos Avanzados en el Diseo de Informes


Tambin puede construir la consulta en el Diseador de Consultas.

27

iReport - Aspectos Avanzados en el Diseo de Informes Consultas en conexiones Hibernate:


4 S Seleccionamos l i los l atributos a incluir en el informe, pudiendo navegar a travs de d aquellos que sean objetos

1 Creamos Consulta HQL 2 La ejecutamos

3 Borramos atributos
28

iReport - Aspectos Avanzados en el Diseo de Informes


Archivos Abiertos Ventana de propiedades

Estructura del Documento (Elementos definidos)

Librera de Elementos Zona de Diseo


29

iReport - Aspectos Avanzados en el Diseo de Informes Cada informe se divide en 7 secciones:

30

iReport - Aspectos Avanzados en el Diseo de Informes


Cada informe se divide en 7 secciones (bandas):

1. Ttulo: Define el ttulo del informe. Se imprime una nica vez al inicio del informe. Puede imprimirse p en una p pgina g separada. 2. Cabecera de Pgina: Define una cabecera para las 2 pginas del informe. Se imprime una vez por pgina. Todas las pginas del informe presentan la misma cabecera de pgina. 3. Cabecera de Columna: Define la cabecera de cada una 3 de las columnas de la seccin detalle. Generalmente, se usa para indicar el nombre de los atributos listados en la seccin detalle detalle .
31

iReport - Aspectos Avanzados en el Diseo de Informes


Cada informe se divide en 7 secciones (bandas):

4. Detalle: en esta seccin se define el diseo con el que se muestra cada registro de la base de datos. Se imprime tantas veces como registros i se recuperen. 5. Pie de Columna: Esta seccin aparece al final de cada 5 columna definida en la seccin detalle. 6. Pie de Pgina: Esta seccin aparece al final de cada pgina del informe. 7. Resumen: Esta seccin aparece al final del informe. Generalmente se usa para presentar informacin resumida o posibles ibl d datos t estadsticos. t d ti
32

iReport - Aspectos Avanzados en el Diseo de Informes Elementos de un Informe:


Elementos Grficos:

Lnea: dibuja una lnea en el informe Cuadrado: dibuja un cuadrado en el informe Elipse: dibuja una elipse en el informe Texto esttico: muestra un texto esttico en el informe Campo de texto: muestra el texto obtenido a partir de una expresin java

Elementos de Texto:

Sub-Informes: incluye un informe ya existente Elementos Especiales:


Cdigo de barras: genera un cdigo de barras Grficas: permite crear una grfica de datos
33

iReport - Aspectos Avanzados en el Diseo de Informes Elementos de un Informe:


Campo d Texto de T t Cdigo de Barras Grfica Lnea Cuadrado Texto Esttico Imagen Marco SubInforme

Elipse

34

iReport - Aspectos Avanzados en el Diseo de Informes Campos de Texto:


p j java de una expresin

muestra el texto obtenido a partir

String Resultado de Operaciones Matemticas Valor devuelto por funciones Java Parmetros o Variables Campos de la conexin de datos

Nos permite visualizar la informacin extrada d de d la l base b de d datos. d

35

iReport - Aspectos Avanzados en el Diseo de Informes


Propiedades del Campo p de Texto Expresin Java Campo de BD: $F{NombreCampo} Seleccionar de la Lista

TextField->Expression

36

iReport - Aspectos Avanzados en el Diseo de Informes


Campos de Texto

Se p pueden aadir campos p de texto asociados a campos p de la BD, Parmetros y Variables arrastrando a la zona de diseo los elementos de la Librera

37

iReport - Aspectos Avanzados en el Diseo de Informes Ejemplo:

Ttulo Cabecera de Pgina Detalle Pie de Pgina

38

iReport - Aspectos Avanzados en el Diseo de Informes Ejemplo:


Cabecera C b d de Pgina Detalle Titulo

Pie

39

iReport - Aspectos Avanzados en el Diseo de Informes Ejemplo:


Texto Esttico L Lneas
Campos de Texto Asociados a la BD

Campos p de Texto Asociados a Funciones Java

Campos p de Texto Asociados a Variables


40

iReport - Aspectos Avanzados en el Diseo de Informes Ejemplo:


Texto Esttico Campos de Texto Asociados a la BD Campos de Texto Asociados a Funciones Java Lneas

Campos de Texto Asociados a Variables

41

iReport - Aspectos Avanzados en el Diseo de Informes

Parmetros:
Son valores enviados al informe desde un programa externo

Definicin:

Men Contextual Estructura del Documento:


add->

Parameter

42

iReport - Aspectos Avanzados en el Diseo de Informes

Parmetros:

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

$P {NombreParmetro}
43

iReport - Aspectos Avanzados en el Diseo de Informes

Variables: Definicin:

add->

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

Men Contextual Estructura del Documento :


Variable Nombre de la Variable Tipo de la Variable

44

iReport - Aspectos Avanzados en el Diseo de Informes

Variables: Existen Variables Predefinidas


PAGE NUMBER: nmero de pginas del informe PAGE_NUMBER: COLUMN_NUMBER: nmero de columnas REPORT_COUNT: nmero de registros por la consulta asociada al origen de datos PAGE_COUNT: nmero de registros mostrados en la pgina actual COLUMNS_COUNT: COLUMNS COUNT: nmero de registros mostrados en la columna actual

Acceso al Valor de una Variable:


Campo de Texto -> $V {NombreVariable}

45

iReport - Aspectos Avanzados en el Diseo de Informes

Ejemplo:
from Pelicula f P li l p where h p.genero.nombregenero=${GENERO}

46

iReport - Aspectos Avanzados en el Diseo de Informes Subinformes


Se utilizan para crear diseos Maestro-Detalle Maestro Detalle a partir de relaciones 1 a muchos Ejemplo:

Director (Maestro) Lista de Peliculas ( (Detalle) )

47

iReport - Aspectos Avanzados en el Diseo de Informes Subinformes


Se crean dos informes por separado


Uno para el detalle Otro para el maestro

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 parmetro correspondiente


48

iReport - Aspectos Avanzados en el Diseo de Informes Subinformes


Para incluir un informe como subinforme se crea un componente subinforme dentro de la seccin detalle del maestro Seleccionamos usar un informe existente Seleccionamos el fichero correspondiente p al informe detalle Pulsamos en Siguiente

49

iReport - Aspectos Avanzados en el Diseo de Informes Subinformes


Indicamos que se utilice para el subinforme la misma conexin que se utiliza en el informe maestro Pulsamos en Siguiente

50

iReport - Aspectos Avanzados en el Diseo de Informes Subinformes


Indicamos la expresin definida en el maestro que se va a utilizar para dar valor al parmetro definido en el subinforme P l Pulsamos en Terminar T i

Expresin en el Maestro

Parmetro P subinforme

51

iReport - Aspectos Avanzados en el Diseo de Informes Subinformes


Una ltima modificacin manual necesaria para que se visualicen los subinformes

new HashMap($P{REPORT_PARAMETERS_MAP})

boton derecho-> P i d d Propiedades

52

iReport - Aspectos Avanzados en el Diseo de Informes Subinformes en relaciones muchos-amuchos


La consulta en el subinforme debe cambiarse. Por ejemplo, j p , para p listar todas las p pelculaspor p director (desde la relacin Pelicula-Director):

Consulta en el informe Maestro: from Director d Lista de campos de Director: iddirector, nombre Consulta en el subinforme: from Pelicula p where $P{NOMBRE} IN p p.directores.nombre directores nombre Lista de campos de Pelicula: titulo, fecha

Aqu, directores es el conjunto definido en la clase Pelicula que guarda Aqu las instancias de directores de una pelcula.

53

JasperReport
Qu es JasperReport?

54

JasperReport - Qu es JasperReport?
Librera Java para la creacin de informes OpenSource Generacin de informes en archivos PDF, HTML, XLS, CSV y XML. Se pueden utilizar diversos orgenes de datos: JDBC TableModels, JDBC, TableModels JavaBeans XML, XML Hibernate, Hibernate and CSV. Puede ser incluida en cualquier proyecto Java (incluyendo J2EE y Aplicaciones Web)
55

JasperReport - Qu es JasperReport?
Documentacin y Libreria (Registrado):

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

API:

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

56

JasperReport
Configuracin de Eclipse

57

JasperReport - Configuracin de Eclipse


Incluir la librera JasperReport en el proyecto Eclipse

jasperreports-1.2.2.jar

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

58

JasperReport - Configuracin de Eclipse


Incluir adems las siguientes libreras:

Jakarta Commons Digester Component (versin 1.1 o posterior) http://jakarta.apache.org/commons/digester/ commons-digester.jar Jakarta Commons BeanUtils Component (versin 1.1 o posterior) http://jakarta.apache.org/commons/beanutils/ commons-beanutils.jar b il j Jakarta Commons Collections Component (versin 1.0 o posterior) http://jakarta.apache.org/commons/collections/ commons-collections.jar Jakarta Commons Logging Component (versin 1.0 o posterior) http://jakarta.apache.org/commons/logging/ commons-logging.jar commons logging.jar
59

Tambin disponibles en el direcotrio /lib de iReport

JasperReport
Visualizando informes desde Hibernate

60

JasperReport - Visualizando informes desde Hibernate


La comunicacin entre IReport y JasperReport se lleva a cabo a travs de un conjunto de parmetros definidos en un objeto HashMap Cuatro Pasos
1.

Creacin de Objetos

Session sesion= UtilidadHibernate getSessionFactory() openSession(); UtilidadHibernate.getSessionFactory().openSession(); HashMap parametros = new HashMap();
2.

Definicin de Parmetros

// Obligatorio: Pasamos la fuente de datos (sesin Hibernate) parametros put(JRHibernateQueryExecuterFactory PARAMETER_ parametros.put(JRHibernateQueryExecuterFactory. PARAMETER HIBERNATE_SESSION,sesion); // Opcionales: p p parmetros del informe parameterMap.put("genero","Comedia");
61

JasperReport - Visualizando informes desde Hibernate


3.

Paso de Parametros al informe

String fileName= "reports/ReportParametros "reports/ReportParametros.jasper"; jasper"; JasperPrint informe= JasperFillManager.fillReport(fileName, parameterMap);


4.

Visualizacin del Informe

JasperViewer.viewReport(informe, false);

62

JasperReport - Visualizando informes desde java


Ejemplo Completo (ejecuta el informe de la pgina 46)
.. import import import import import .. net.sf.jasperreports.engine.JasperFillManager; net.sf.jasperreports.engine.JasperPrint; net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory; net.sf.jasperreports.view.JasperViewer; 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();} JasperViewer.viewReport(informe,false);


63

JasperReport - Visualizando informes desde java


Para obtener ms informacin 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 http://jasperreports.sourceforge.net/api/net/sf/jasperreports/view/JRVie wer.html
64