reportes_guia

24
Ing. Alberto Moreno Facultad de Ingeniería Industrial y de sistemas IREPORT PASOS PARA CREAR UN REPORTE CON QUIEBRES , por ejemplo facturas por cliente: Paso 1.- Ingresar a oracle y comprobar su consulta: Paso 2.- realizar el diseño de reportes : entrar al Ireport Debe antes instalar el Ireporte que es bastante sencillo y practico, luego crear un documento reporte en File->New >Document

description

Empleando el Ireport con Oracle para crear reportes con grupos y graficos espero que les sirva de ayudaIng. Alberto MOreno

Transcript of reportes_guia

Page 1: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

IREPORT

PASOS PARA CREAR UN REPORTE CON QUIEBRES , por ejemplo facturas porcliente:

Paso 1.- Ingresar a oracle y comprobar su consulta:

Paso 2.- realizar el diseño de reportes : entrar al Ireport

Debe antes instalar el Ireporte que es bastante sencillo y practico, luego crearun documento reporte en File->New >Document

Page 2: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Paso 3.- Establecer la conexión con oracle:

Data->Connections: (observe que la base de dato genérica en Oracle expresses XE, en el profesional va el nombre de la BDD)

Paso 4.- en Data->Report Query -> establecer la consulta , comprobadoanteriormente

Page 3: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Hacer click en read Fileds para leer los campos y llevarlos al reporte.

Paso 5.- es diseñar su reporte con las herramientas que ofrece el ireport delmenú ( T=Textos estaticos F=Campos) , arrastar los campos hacia la seccióndetalle como se ve en la figura:

Page 4: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Paso 6.- Pero lo que se desea es agrupar por el campo cliente, entonces delmenú principal seleccionar

Al hacer click sobre el icono colocar un nuevo nombre de grupo:

Paso 6.- grabar y compilar el archivo va a tener la extensión reporte1.jrlxml

Y luego ejecutarlo con la conexión activa , y debe mostrar cómo : (executeactive connection)

Además se debe dar formato al campo fecha , seleccione y en propiedadeshacer click en crear:

Page 5: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Para llevarlo asociarlo a una página web y generando un reporte como PDF

Primero debe agregar la librería de reportes:( add Library :Jar Folder) ,estalibrería lo puede descargar de internet:

Page 6: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Crear un Jsp para llamado webRepor01.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ page import="DAO.*"%><%@ page import="java.sql.*"%><%@ page import="java.util.*" %><%@ page import="java.io.*" %><%@ page import="net.sf.jasperreports.engine.*" %><%@ pageimport="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource" %><%@ page import="net.sf.jasperreports.engine.export.*" %><%@ page import="net.sf.jasperreports.engine.util.JRLoader" %><%@ page import="net.sf.jasperreports.engine.xml.JRXmlLoader" %><%@ page import="net.sf.jasperreports.engine.design.JasperDesign" %><%@ page import="net.sf.jasperreports.view.*" %><%@ page import="javax.servlet.ServletOutputStream" %><%@ page import="javax.servlet.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html> <body> <% try{

Map parameters = new HashMap(); //declarando una variable de tipoparametro //parametros para el reporte HttpServletRequestWrapper srw=newHttpServletRequestWrapper(request); //srw=sacar una ruta actual de las paginas String fpath=srw.getRealPath("")+"\\reporte\\reporte4.jrxml"; //getRealPath=devuelve las rutas donde estan mis paginas JasperDesign jasperDesin=JRXmlLoader.load(fpath); //JasperDesign= sirve para guardar el diseño del reporte

Page 7: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

JasperReportjasperReport=JasperCompileManager.compileReport(jasperDesin); //guardacompilacion del reporte

Connection cn=Conexion.getConexion();

// parameters.put("parametrocliente",request.getParameter("combo1")); /*si es k uviera mas de un parametro parameters.put("parametrocliente","alfki"); parameters.put("parametrocliente","alfki"); parameters.put("parametrocliente","alfki");*/

byte[] bytes=JasperRunManager.runReportToPdf(jasperReport,parameters,cn); //guarda en una variable todo el reporte convertido en pdf

cn.close();

response.setContentType("application/pdf"); response.setContentLength(bytes.length); ServletOutputStream salida=response.getOutputStream(); salida.write(bytes,0,bytes.length); salida.flush(); salida.close(); }catch (Exception e){ out.print(e); }

%> </body></html>

La conexión en el paquete DAO// Clase : Conexionpackage DAO;import java.sql.*;public class Conexion {public static Connection getConexion(){ //conexion con oracle express String Driver = "oracle.jdbc.driver.OracleDriver"; String URL = "jdbc:oracle:thin:@localhost:1521:XE"; String user = "system"; String password = "system";

Connection cn=null; try{ Class.forName(Driver); cn = DriverManager.getConnection(URL,user,password); }catch(Exception ex){

Page 8: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

System.out.print(ex.getMessage()); } return cn; }}

El Resultado será que el reporte puede ser grabado como Pdf

La Base de Datos empleados:

Page 9: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Tambien puede pasar parámetros al reporte , solo descontenta las líneas decódigos

Si se desea agregar graficos al reporte, arrastar el control hacia una secciónde grupo

Page 10: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Luego en la ficha details seleccionar el campo por el cual se va dibujar lagrafica:

KeyExpresion corresponde a la leyenda en este caso el numero de factura

Y value Expression es el campo que contiene el dato a graficar.

Page 11: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Page 12: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Explicación de cada banda.Cuando has pulsado OK, se ha creado una pantalla como la que se

muestra en la figura.

Figura 1 Bandas del informe

En ella aparecen marcadas diferentes áreas que llamaremos a partir deahora “bandas”.

Cada banda se comporta de un modo diferente.

Hay que pensar que un informe de iReport está pensado a nivel depágina. Lo que se define es el aspecto general de una página y no sepueden definir (a priori) elementos fuera del tamaño de la página.

El significado de cada banda es el siguiente:

§ Title : Esta banda se mostrará sólo una vez al principio del informetenga las páginas que tenga el mismo.

§ PageHeader : Esta banda es la cabecera de la página; se repitecada vez que se pinta una página nueva.

Page 13: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

§ ColumnHeader : Esta banda es la cabecera de las columnas.Inicialmente nosotros hemos definido sólo una columna, por loque su comportamiento es análogo a PageHeader.

§ Detail : Esta banda es la encargada de mostrar los elementos quetienen alguna repetición, estos elementos se mostrarán en lossubinformes que explicaremos más adelante. En esta banda solose deben insertar los subinformes, ya que los mismos son losencargados de hacer las repeticiones.

§ ColumnFooter : Pie de la columna. Su comportamiento esanálogo a ColumnHeader.

§ PageFooter : Pie de página, se repite una vez por página. Sucomportamiento es análogo a PageHeader.

§ Sumary : Sólo se repite una vez por informe en la última página delmismo. Su comportamiento es análogo a Title.

1.1 Parámetros ($p) .

Los parámetros se usan para definir la aparición o no de textos o paramostrar algún valor concreto que no se pasa como campo($F).

Cuando los parámetros se usan para mostrar o no un texto, tiene unvalor “true” o “false”, porque tanto los parámetros como los campos ($Py $F respectivamente) se pasan como textos (strings).

Para introducir los parámetros se pulsa sobre y aparece estecuadro de diálogo:

Page 14: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Figura 2 Cuadro de diálogo de parámetros

Para añadir un parámetro ($P), se pulsa sobre “Nuevo” y aparece otrocuadro de diálogo:

Nombre de parámetro : Nombreque se quiere dar al parámetro. Apartir de ahora, cuando en elproyecto te quieras referir adicho parámetro, lo nombraráscomo $P{nombre parámetro}.

Tipo de parámetro : Siemprejava.lang.String

Expresión del valor por defecto :Si se quiere un valor por defecto,aquí se escribe como unacadena de texto,

entrecomillado. Ej.: ”true”

Descripción de parámetro : Si se quiere una descripción del parámetro.

Figura 3 Cuadro de diálogo de propiedades de parámetros

Campos ($F).Siempre se van a definir como datos de tipo texto.Serán los campos que se recuperen de la base de datos y se pasen enun objeto DataSource que entienda Jasper.

Para introducir los campos se pulsa sobre y aparece este cuadrode diálogo:

Para añadir un campo ($F), se pulsa sobre “Nuevo” y aparece otrocuadro de diálogo:

Nombre del Campo : Nombreque se quiere dar al campo. Apartir de ahora, cuando en elproyecto te quieras referir adicho campo, lo nombrarascomo $F{nombre campo}.

Page 15: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Tipo de campo : Siempre java.lang.String

Descripción del campo : Si se quiere una descripción del campo.Figura 4 Cuadro de diálogo de propiedades de campo

Page 16: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Variables ($V).

Se utilizan para hacer cálculos dentro del informe, como por ejemplocalcular una suma de campos o un paginado.

Para introducir una variable se pulsa sobre y aparece estecuadro de diálogo:

Figura 5 Cuadro de diálogo de variables

Para añadir una variable, se pulsa sobre “Nueva” y aparece otro cuadro dediálogo:

Nombre de variable : Nombreque se quiere dar. A partir deahora, cuando en el proyecto tequieras referir a dicha variable, lanombraras como $V{nombrevariable}.

Tipo de variable : Depende dela salida que genere

Cálculo : Si se quiere hacer uncálculo, aquí se dice cual.

Reset type : Aquí se decidecuándo quiere evaluarse lavariable

Page 17: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Reset group : Aquí se decide el grupo (se debe definir con anterioridad)Figura 6 Cuadro de diálogo de añadir variable

“Expresión” y “Valor inicial de expresión”: aquí se escribe una expresión.Haciendo clic al botón derecho aparece un cuadro de diálogo que es el“Editor de expresiones”.

Elementos de Datos

Se usarán para mostrar los $F, $P y $V que previamente se han definido.

Se pulsa sobre el icono

Se coloca en la banda en la que se quiera mostrar y se hace doble click sobreél. Aparece el siguiente cuadro de diálogo:

Figura 7 Cuadro de diálogo de elementos de datos. Pestaña Comunes

En la caja “Imprime cuando sea verdadera la expresión”, hay queponer una expresión de tipo booleano: “new Boolean($F{CAMPO} !=

Page 18: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

null)” (sin comillas). Esa expresión puede ser compleja usando tanto &&(and) como || (or).

En “Posición se puede decidir si la posición del elemento será fija o porel contrario flotante, con lo que se moverá según se hagan más omenos grandes los elementos que le preceden.

Las demás opciones de esta pestaña son intuitivas, menos la de“Imprimir cuando cambie el grupo”, que se explicará al mismo tiempoque los grupos.

Si se pulsa sobre la siguiente pestaña “Campos de texto”, aparece elsiguiente cuadro de diálogo:

Figura 8 Cuadro de diálogo de elementos de datos. Pestaña Campos de Texto

Page 19: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

En “Expresión del Campo de Texto” se introduce el texto que se quieremostrar y se le concatena (+) el campo asociado a dicho texto.

Del resto de las opciones de la pantalla es reseñable el “Ajuste endesbordamiento”. Esta opción no funciona correctamente si en laanterior pantalla se ha definido la posición como “float”.

La pestaña “Propiedades Texto” sirve para definir los textos

La pestaña “Hiperenlace” permite crear un hiperenlace asociado tantoa una página web como a un ancla dentro del propio documento. Estaopción no será usada apenas porque el fin último de casi todos losinformes es la impresión en papel.

Page 20: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Imágenes.Todas las imágenes necesarias para las plantillas se encuentran en un mismodirectorio en un sistema de ficheros T3. Esa ruta ya está fijada dentro de Jasper,por lo que cuando desde la plantilla se quiera introducir una imagen los pasosa seguir son los siguientes:

Dejar el fichero de imagen en “T3/modulos/plantillas/imagenes”

Escribir en el elemento de imagen de la plantilla en la casilla “Expresión deimagen” el nombre del fichero con su extensión.

Por ahora, si se introducen imágenes en el informe éste sigue compilando, peroel “Viewer” de Jasper falla por lo que no se puede mostrar, así que lo lógicoserá hacer las plantillas sin imágenes, compilarlas y más tarde añadir lasimágenes cuando se quiere ver el resultado final.

Se pulsa sobre el icono

Se coloca en la banda en la que se quiera mostrar y se hace doble click sobreél. Aparece el siguiente cuadro de diálogo:

Expresión de Imagen :Se escribe el nombredel fichero con suextensión .

Figura 9 Cuadro de diálogo de propiedades de imagen

Page 21: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

1.1 Grupos.Actualmente este recurso de iReport sólo se usa para hacer que lossubinformes funcionen tal como nosotros queremos en cada informe. Laexplicación del funcionamiento de los grupos va asociada al funcionamientode los subinformes por lo que serán explicados junto con los mismos.

1.2 Subinformes.Se usarán sólo cuando se quieran mostrar “n” ocurrencias de varios camposagrupados de alguna forma determinada.

Hasta ahora hemos visto un informe como un fichero XML que guarda lainformación necesaria para crear el mismo.

Ahora con los subinformes hay que cambiar ligeramente ese punto de vista. Siun informe es lo suficientemente complejo para tener varios grupos derepetición, por ejemplo un demandante al que se le quieren mostrar todos losidiomas que habla con sus características (grupo1) y todos los trabajos que harealizado con sus fechas de alta y baja en los mismos (grupo2), hay que usarsubinformes.

Un subinforme no es más que otro fichero XML asociado al fichero XMLprincipal y que comparte todos o parte de sus datos.

Tanto el informe como el/los subinforme/s se deben definir de un mododeterminado para que cumplan unos requisitos predeterminados por Jasper.

Primero vamos a enumerar los requisitos que debe cumplir el XML principal.Para hacer más entendible la explicación vamos a seguir el proceso decreación del informe antes mencionado.

1.2.1 Informe Principal.

En el informe principal se crearán tantos grupos como subinformes senecesiten. En este caso serán 2, uno para idiomas y otro para ocupaciones.

Para crear el grupo se opera del siguiente modo:

Se pulsa sobre el icono y aparece el cuadro de diálogo:

Page 22: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Figura 10 Cuadro de diálogo de grupos

Page 23: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

Page 24: reportes_guia

Ing. Alberto Moreno

Facultad de IngenieríaIndustrial y de sistemas

§