DiseƱador de Reportes


IntroducciĆ³n

Jaspersoft Studio es una herramienta que premite desarrollar reportes.

A travĆ©s de estos reportes se puede brindar informaciĆ³n estadĆ­stica y detallada a nuestros clientes ayudĆ”ndolos a gestionar su negocio y a tomar decisiones basĆ”ndose en datos reales presentados de manera ordenada para un mejor entendimiento.

Conceptos BƔsicos a manejar:

Concepto de query:

  • Un query en base de datos es una bĆŗsqueda o pedido de datos almacenados en una base de datos.

Ā 

Layout del Jaspersoft Studio

Design:

En esta secciĆ³n se ve la interfaz grĆ”fica del reporte que estamos creando.

Source:

Ventana que nos muestra el archivo XML con el cĆ³digo fuente generado por el designer.

Preview:

Ventana que nos permite visualizar el resultado del reporte generado.

Consideraciones:

Seleccionar siempre la base de datos que estemos utilizando ya que por defecto selecciona ā€˜One Empty Recordā€™.

En caso de existir, ingresar valores para los parĆ”metros del reporte. Los parĆ”metros se pueden marcar para que no aparezcan en Preview, destildando la propiedad ā€˜Is For Promptingā€™ del parĆ”metro correspondiente.

Para descargar una copia en un formato determinado se usa el icono de guardar (Export) y se elige el formato de archivo.

Repository explorer:

En esta secciĆ³n podemos ver todos los 'Data Adapters' creados a los cuales se pueden consultar.

Los Data Adapters son los repositorios que creamos dentro Jaspersoft y de donde se extraen los datos para generar los reportes.


CreaciĆ³n del repositorio

  • Abrimos JasperSoft Studio.

  • Expandimos la pestaƱa del data adapter que se encuentra a la izquierda superior.

  • Clic derecho sobre el Data Adapter que viene por defecto.

  • Clic en ā€˜Create Data Adapterā€™.

Se desplegarĆ” una ventana en la cual debemos seleccionar la opciĆ³n 'Database JDBC Connection' y luego clic en 'Next' como se muestra en la siguiente imagen:

ConfiguraciĆ³n del repositorio:

  • Ingresamos un nombre para nuestro repositorio, en nuestro ejemplo sera Integra Server.

  • Hacemos clic en JDBC driver y seleccionamos la opciĆ³n: com.mysql.jdbc.driver.

  • Editamos el campo JDBC Url, en este campo se ingresa la IP y puerto del servidor en donde esta alojada nuestra base de datos. El formato debe de ser el siguiente:

Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  - jdbc:mysql://IP:PUERTO/NombreBaseDeDatos*

  • Ingresamos el usuario y password en ā€˜usernameā€™Ā  y ā€˜passwordā€™ respectivamente. Consultar a Integra por Usuario y Password para la base de datos.

  • Hacemos clic en la pestaƱa ā€˜Driver Pathā€™.

  • Clic en el boton ā€˜Addā€™.

  • Seleccionamos el driver para nuestra conexiĆ³n con la base de datos.

    El driver se puede descargar del siguiente link:
    http://dev.mysql.com/downloads/connector/j/5.1.html

(Ver ejemplo en capturas de pantalla).

Una vez que agregamos el driver de conexiĆ³n, hacemos clic en el botĆ³n ā€˜Testā€™ para probar nuestra conexiĆ³n.

Un mensaje deberĆ­a de desplegarse indicando que la conexiĆ³n se ha realizado con Ć©xito.


Propiedades

Properties

Se muestran las propiedades del elemento seleccionado.

Palette

En esta secciĆ³n se brindan todos los posibles elementos que podemos incluir dentro de un reporte

Outline

Ventana que se encuentra al borde inferior izquierdo donde se puede observar la estructura de nuestro reporte en forma de Ɣrbol.


Elementos fundamentales del Outline:

ParƔmetros

  • Los parĆ”metros sirven para condicionar de alguna forma los resultados en el reporte.

Ejemplo: si tenemos un parƔmetro AGENTE, luego nuestro reporte filtrarƔ los resultados para un agente espcƭfico que le asignemos.

NotaciĆ³n: $P!{nombre}

  • CreaciĆ³n : Clic derecho en parĆ”metros > Crear parĆ”metro.


En caso de existir parĆ”metros en nuestro reporte, y ya que estos sirven para filtrar resultados de la query, debemos de agregarlos en la query con la notaciĆ³n $P!{nombreParametro}.

Cuando se trata de una variable que puede contener una lista, va sin comillas. Ejemplo: WHERE campania IN ($P!{QUEUE}).

Para concatenar valores en los parĆ”metros se hace con siguiente nomenclatura: ā€˜valor1 , valor2ā€™

Si es una variable que contiene un solo valor, lleva comillas simples. Ejemplo: WHERE fecha >= '$P!{INITIAL_DATE}ā€™

Fields

  • Los fields son variables que toman el valor de alguna columna retornada por la query. Ā 

NotaciĆ³n: $F{nombreColumna}.

Si bien los field no tienen porque llevar el mismo nombre que la columna retornada por la query, es una buena prƔctica que lo hagan.

  • CreaciĆ³n: Clic derecho en fields > Crear nuevo field.

Ā 

  • Tipo de field: para especĆ­ficar el tipo de datos que serĆ” nuestro field, hacemos clic en el field creado > en la ventana de properties en la fila class bajo la columna value seleccionamos el botĆ³n de examinar > seleccionamos el tipo de dato > hacemos clic en Ok.



Variables

  • Las variables sirven para almacenar un valor determinado. Generalmente se utilizarĆ”n para guardar una expresiĆ³n matemĆ”tica.

Ejemplo:

ExpresiĆ³n: $F{comisiĆ³n} * ($F{sobre_total}==true$F{importe_agente}:$F{desde}) + $V{importeComisionCampania}

  • CreaciĆ³n: Clic derecho en variables > Crear variable.

  • ExpresiĆ³n: Para modificar la expresiĆ³n de una variable seleccionamos la variable > en la vista de properties modificamos el campo ā€˜Expressionā€™.

  • Tipo: Para modificar el tipo de la variable seleccionamos la variable > en la vista de properties modificamos el campo ā€˜Value Class Nameā€™.

    Ā 

Editar ExpresiĆ³n

Query

  • Generalmente nuestro reportes van a tener una Ćŗnica query que nos va a retornar todos los datos que queremos mostrar en el reporte.

  • Podemos acceder a una columna de una query mediante un Field.

  • Para crear una query debemos de hacer clic derecho sobre nuestro reporte padre dentro de la ventana outline y luego hacer clic en ā€˜Data Set and Queryā€™.

Como se explico anteriormente, la query es una consulta que nos retorna los datos que queremos que se muestren en nuestro reporte.

La pregunta que surge entonces es la siguiente:

Ā Ā Ā  - ĀæDĆ³nde y cĆ³mo mostramos estos datos?

Detail

Por defecto cuando creamos un reporte Jaspersoft Studio nos crea un elemento del tipo Detail.

El detail es el que va a contener las filas de los datos retornados por la query.

Para cada fila del resultado de la query, se repetirĆ” la banda Detail con los datos de los fields obtenidos.

Group

Permite agrupar la colecciĆ³n de filas de los detalles en grupos reales.

Ejemplo: Un requerimiento usual del cliente es querer mostrar los resultados agrupados por Cliente, Agente, Campana en ese orden.

Antes de continuar es importante destacar la diferencia entre Grupos y el Group By de sql.

Grupos: Agrupan las filas segĆŗn una columna de forma secuencial.

Ejemplo:

Si creamos un grupo nuevo para la columna 1, el resultado es el siguiente:

Grupo: foo Ā Ā  Ā Ā Ā Ā  foo_12Ā  foo_13 Ā Ā  Ā Ā Ā Ā  foo_22Ā  foo_23 Grupo: Example Ā Ā  Ā Ā Ā Ā  Example_32 Example_33 Ā Grupo: foo

Notemos que no se agrupan todos los elementos foo bajo la misma fila, esta es la diferencia primordial con el GroupBy.

La manera de solucionar esto es hacer que en la query se ordenen primero por la columna que vamos a agrupar, en nuestro caso la columna 1.

Query ejemplo:

SELECT * Ā Ā  FROM myFooTable Ā Ā  ORDER BY column1

En ese caso el resultado seria el siguiente:

Para crear un nuevo grupo:

  • Clic derecho sobre el reporte padre en outline.

  • Crear Grupo.

  • Le asignamos un nombre y seleccionamos los elementos que queremos que sean parte del grupo.

Clic en finalizar

NOTA: Si queremos que se repita el group header en las demƔs pƔginas debemos setear en las propiedades del group header, Reprint Header On Each Page = true.

Para que el header permanezca en la pƔgina y no pase a la siguiente, le debemos asignar un mƔximo de altura, esto lo hacemos desde las propiedades del group header, bajo el atributo Min Height To Start New Page.

De esta manera nos evitamos que quede el header sin el detail asociado.

TextField

Es un campo de texto libre.

Se utilizan para asignar variables, pƔrametros y fields.

Para desplegar un elemento en un textfield lo podemos hacer de dos maneras, arrastrando el mismo a un textfield o modificando la expresion regular del textfield.

Propiedades del Textfield

Appearence:Ā  Permite modificar el aspecto del textfield, su ubicaciĆ³n en el reporte, su tamaƱo su color y estilo entre otros.

Borders: Permite editar los bordes del textfield.

Textfield: Nos permite modificar la expresiĆ³n que va a tener el textfield.


InternacionalizaciĆ³n

Ā 

Para agregar el archivo de internacionalizaciĆ³n de integra debemos de seguir los siguientes pasos:

Seleccionamos el reporte en la ventana outline.

En las propiedades del reporte seleccionamos el tab reporte.

Dentro de dataset bajo la propiedad ā€˜Resource Bundleā€™ hacemos clic en el botĆ³n de examinar.

Seleccionamos el archivo de internacionalizaciĆ³n integra.resources.language.

Se deben agregar las variables deseadas a los archivos properties (solo si no existen ya) en sus tres lenguajes: language_es.properties, language_en.properties y langauge_pt.properties

La notaciĆ³n en el properties es: NOMBREVARIABLE=Valor variable en idioma correspondiente.

Si tiene caracteres particulares (tildes, Ʊ, etc) se debe agregar en unicode ej para Ć³ = \u00f3. DistribuciĆ³n serĆ­a Distribuci\u00f3n.

Luego, nuevamente en el reporte, se colocan para los tƭtulos y encabezados con Text Fields que apunten a las variables del properties. Ejemplo: para parƔmetro INITIAL_DATE un Text Field que tenga en Expression $R{FROM}.

NOTA: Para probarlo localmente se debe tener una copia de los properties en el directorio donde se encuentra el reporte. Entonces se cambia el Resource Bundle por: language. Luego se podrƔn ver los valores sustituidos.

Para cambiar el idioma con el que se ejecuta el reporte se debe editar en: Menu Window -> Preferences -> Jaspersoft Studio -> Report Execution -> Locale.

Si se quiere probar en un idioma en particular se debe de importar el resource para ese idioma en especĆ­fico, esto se hace bajo las propiedades del proyecto padre en el atributo Resource Bundle.

Por ejemplo si lo queremos probar en espaƱol en el resource bundle ponemos ā€˜language_esā€™.


Subreportes

El subreporte sirve para desacoplar la lĆ³gica dentro de un mismo reporte.

Para agregar un subreporte al sistema arrastramos el control subreporte desde la paleta que se encuentra en el borde superior derecho.

En caso que nuestro subreporte sea un reporte ya existente hacemos clic en la opciĆ³n seleccionar archivo de reporte, en caso contrario creamos un nuevo reporte.

En nuestro ejemplo asumimos que hay un reporte existente por lo tanto lo agregamos.

Pasar parƔmetros:

Desde el reporte principal le podemos pasar parƔmetros al subreporte con los cuales podemos filtrar la query del subreporte.

Se toman los valores retorno de la query del reporte padre como parƔmetros para filtrar la consulta del subreporte.

Por ejemplo:

Suponemos que la query del reporte padre retorna AGENTE y CAMPANIA, entonces los parƔmetros o filtros que le podemos pasar al subreporte son estos valores retornados por la misma (AGENTE y CAMPANIA)

Relacionamos el parƔmetro del subreporte que queremos retornar con una variable global (de nuestro reporte padre).

Retornar valores:

Los subreportes pueden retornar valores al reporte padre. La manera en que se realiza esto es asignƔndole a una variable del reporte padre (crear variable si no existe) el valor de retorno del subreporte.

En la ventana de propiedades del subreporte, bajo la pestaƱa de subreporte hacemos clic en Return values.

Relacionamos la variable del subreporte que queremos retornar con una variable global (de nuestro reporte padre).

Ā NOTA: Asegurarse que los tipos de ambas variables (subreporte y variable reporte padre) sean del mismo tipo.


DataSets

  • Un data set es una colecciĆ³n de datos.

  • Cada dataset tiene diferentes columnas (fields).

  • Cuando un nuevo registro es creado en el dataset, se le agregan valores a estos fields.

  • Cada dataset es independiente, por lo que cada uno va a tener su propia datasource (fuente de datos suministrada por una query)

Como crear un DataSet:

Clic derecho en el reporte padre en la ventana outview y seleccionamos Crear Dataset

Le asignamos un nombre y seleccionamos Crear un nuevo dataset desde conexiĆ³n y hacemos clic en siguiente.

Seleccionamos la base de datos e ingresamos la consulta que nos va a traer los campos deseados.

Hacemos clic en siguiente.

Seleccionamos los campos que queremos que traiga.

En caso de querer agruparlos mediante un group by hacemos clic en el botĆ³n siguiente.

En caso de no agruparlos y querer finalizar, hacemos clic en Finalizar.

En caso de querer agregar parƔmetros al dataset desplegamos el control del dataset en la vista Outline, hacemos clic derecho en ParƔmetros, Crear parƔmetros.


Tabla

  • Las tablas son una manera de mostrar los resultados que obtenemos en el data set.

Para crear una tabla lo hacemos desde la paleta.

Ā 

Seleccionamos el data set al cual vamos a asociar nuestra tabla.

Seleccionamos la misma conexiĆ³n y hacemos clic en Siguiente.

Seleccionamos los fields del dataset que queremos mostrar en la tabla

Editamos el layout de la tabla y hacemos clic en Finalizar.

Luego de creada la tabla se debe ir a sus propiedades bajo Dataset y acceder al botĆ³n de Parameters.

Se agrega una lĆ­nea, en la que se agrega como Expression del parameter el parĆ”metro del reporte principal al que se quiere asociar.Ā