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.