Ejemplo Reporte

Paso a paso para crear un nuevo reporte.

CreaciĆ³n de reporte base

Abrimos JaspersoftĀ® Studio para comenzar a desarrollar el reporte.

Una vez abierto debemos crear un nuevo reporte.

  • NewĀ ā†’ Jasper Report




Seleccionamos el template "Blank A4" y a continuaciĆ³n hacemos clic en "Next".





Modificamos el nombre por defecto en el campo "File name" con el nombre que le queremos dar al archivo .jrxml que estamos a punto de generar.

Luego seleccionamos la carpeta en la que queremos almacenarlo y hacemos clic en "Next".





A continuaciĆ³n se deberĆ” seleccionar el data adapter previamente creado (CreaciĆ³n del Repositorio) sobre el cual deseamos realizar la consulta de datos.

En este punto tambiĆ©n se da la opciĆ³n de ingresar la query deseada, pero en este caso no se ingresara ya que deseamos filtrar nuestro reporte de forma dinĆ”mica utilizando parĆ”metros que se deben crear previo a su inserciĆ³n en la misma. Por lo tanto obviamos este paso y hacemos clic en "Finish".





Luego de realizado estos pasos se crea el reporte vacĆ­o como se muestra a continuaciĆ³n.



CreaciĆ³nĀ deĀ parĆ”metros

A continuaciĆ³n se procede a la creaciĆ³n de los parĆ”metros necesarios para filtrar nuestro reporte.

Para crear los parĆ”metros hacemos clic derecho sobre "Parameters" en la ventana "Outline"Ā ā†’ Create Parameter.





En el momento en el cual se crea el parƔmetro, se selecciona automƔticamente y se pueden visualizar sus propiedades en la ventana "Properties" como se muestra en la siguiente imagen.

Por defecto el parƔmetro se crea con el nombre "Parameter1", el cual se puede modificar accediendo a las properties en el campo "Name".

Por Ćŗltimo seleccionamos el tipo de dato que va a recibir, esto se realiza de la siguiente manera:

  • Clic en el botĆ³n que se encuentra remarcado en rojo en la imagen.

  • Se abrirĆ” la ventana "Open Type", la cual estarĆ” vacĆ­a, para acceder a los tipos de datos debemos buscar el tipo de datos deseado en el campo "Enter the name prefix or pattern".

  • Luego de filtrado el tipo de datos que queremos utilizar, debemos seleccionar el que diga java.sql (ver ejemplo en imagen).





Para este reporte vamos a crear 3 parƔmetros:

  • INITIAL_DATE (Timestamp)

  • FINAL_DATE (Timestamp)

  • CAMPANIA (String)

Estos se utilizaran para filtrar nuestro reporte por un periodo de tiempo determinado y por campaƱa/s.

InserciĆ³n de la query

Luego de creados todos los parƔmetros con sus nombres y tipos apropiados debemos ingresar la consulta.

Dentro de la ventana "Outline" hacemos clic derecho sobre el reporteĀ ā†’ Datasets and Query.'



En la siguiente imagen se muestra la query ingresada por el usuario utilizando los parƔmetros previamente creados dentro de la misma.

En este caso el parĆ”metro CAMPANIA lo escribimos con comillas ('$P!{CAMPANIA}') Ā para que te deje leer los campos de la query.

Una vez leĆ­dos los campos de esta query (clic en botĆ³n Read Fields) se le deben quitar estas comillas ya que este parĆ”metro va a contener una lista de valores que se le pasan entre comillas separados por coma ('valor1','valor2','valor3').

Esto aplica para todos los parƔmetros a los que les vayamos a pasar una lista de valores.

Es decir:

  • campaign in ('$P!{CAMPANIA}')

  • clic en botĆ³n Read Fields

  • campaign inĀ ($P!{CAMPANIA})

  • clic en OK



Fields y Text Fields

Una vez leĆ­dos los fields, estos se reflejan en la ventana Outline desplegando el menĆŗ "Fields".

Para utilizar los fields deseados, simplemente se seleccionan y se realiza Drag&Drop hacia la banda "Detail" como se muestra en la siguiente imagen.

Nota:Ā Importante finalizado este paso, completar el pasoĀ InternacionalizaciĆ³n, agregando el archivo de lenguaje.





Otra manera de utilizar los fields que obtenemos de la query es la siguiente:

  • Ir a la secciĆ³n "Palette" y hacerĀ Drag&Drop un Text Field hacia la banda Detail.




  • Doble clic sobre el Text Field (se despliega ventana para seleccionar field).

  • Seleccionar field deseado y luego damos clic en "Finish".




En la siguiente imagen muestra como quedan los fields luego de ser seleccionados y arrastrados desde el menĆŗ "Fields".

Estos se ajustan automƔticamente al largo de la banda "Detail" y generan por defecto un "Static Text" con el nombre del field, este se coloca automƔticamente en la banda "Column Header" utilizada para colocar los tƭtulos a las columnas.

Estos Static Text sirven para escribir texto, en este caso se borran porque se utilizaran Text Fields para internacionalizar los tĆ­tulos (se explica mas adelante).

Luego de incorporado los fields a nuestro reporte, debemos ajustar las bandas (como indica la flecha roja) con el ancho de los Text Fields para que el reporte quede mƔs prolijo a la hora de generarlo.





Al momento en el que tenemos las bandas ajustadas en relaciĆ³n a los text fields y luego de borrar los static texts generados automĆ”ticamente, procedemos a agregar los text fields (vacĆ­os) en lugar de los static texts.

Para generar un reporte agradable podemos agregar propiedades a los text fields para que luzcan mejor como por ejemplo:

  • Borde

  • Color

  • Ajuste de ubicaciĆ³n del texto

  • TamaƱo del texto

En la siguiente imagen se muestra como se agrega un borde a uno o varios text fields.

Para realizar esto:

  • Seleccionar los text fields a los que les queremos aplicar el borde.

  • En la secciĆ³n properties, seleccionar "Borders" y luego modificar el campo "Pen Width" para setear el grosor del borde.

  • TambiĆ©n se puede modificar el color y el tipo de lĆ­nea que tendrĆ” el borde de nuestro text field.




En la siguiente imagen se muestra como se ajusta la ubicaciĆ³n del texto u expresiĆ³n utilizado en un text field.

Para realizar esto:

  • Seleccionar los text fields a los cuales les queremos aplicar un ajuste de texto/expresiĆ³n.

  • En la secciĆ³n properties, seleccionar "Text Field" y luego seleccionar la alineaciĆ³n deseada (Alignment).




En la siguiente imagen se muestra como se ajusta el tamaƱo del texto u expresiĆ³n utilizado en un text field.

Para realizar esto:

  • Seleccionar los text fields a los cuales les queremos aplicar un ajuste de texto/expresiĆ³n.

  • En la secciĆ³n properties, seleccionar "Text Field" y luego seleccionar el tamaƱo deseado (Font).




En la siguiente imagen se muestra como se agrega color a un text field.

Para realizar esto:

  • Seleccionar los text fields a los cuales les queremos agregar color.

  • En la secciĆ³n properties, seleccionar "Appearance" y luego seleccionar el color deseado (Forecolor es el color del texto y Backcolor es el color de fondo).

  • Por ultimo des-tildar el checkbox "Transparent".Ā 




InternacionalizaciĆ³n

Para internacionalizar el reporte debemos colocar resources dentro de los fields que queremos tener en varios idiomas como por ejemplo los tĆ­tulos del reporte o los tĆ­tulos de las columnas.

Antes de llevar a cabo la internacionalizaciĆ³n se deben crear tantos archivos PROPERTIES como idiomas queremos usar.

En este caso nosotros vamos a utilizar inglƩs y espaƱol por lo tanto se debe crear el archivo properties_en y properties_es.

Estos archivos SIEMPRE deben estar en la carpeta en la que se encuentra almacenado nuestro reporte.



Para realizar esto:

  • Debemos tener los archivos properties con los distintos idiomas que queremos utilizar dentro de la carpeta donde se encuentra nuestro reporte.





  • Modificar estos archivos agregando el resource junto con la descripciĆ³n en el idioma correspondiente como lo indica la siguiente imagen.





  • Debemos incluir el resource creado en el editor de expresiĆ³n de nuestro text field con la siguiente nomenclatura.





  • Por Ćŗltimo, al momento de ejecutar nuestro reporte, dentro de las Properties generales de nuestro reporte debemos modificar el campo "Resource Boundle" indicĆ”ndole el archivo properties al cual va a hacer referencia.

  • Para dirigirse a las properties de nuestro reporte debemos seleccionar nuestro reporte dentro de la secciĆ³n Outline.





  • Luego dirigirse a Properties y seleccionar el tab Report.

  • Dar clic en el botĆ³nĀ 

    Ā del Resource Boundle.

  • Seleccionar el archivo deseado y dar clic en "OK".



AgregarĀ parĆ”metrosĀ al reporte


Dentro del reporte es bueno mostrar los parƔmetros por los cuales estamos filtrando la query.

Esto se realiza de la siguiente manera:

  • Dentro de la banda "Title" se agregan 2 Text Fields por parĆ”metro a agregar (uno para almacenar la descripciĆ³n y otro para almacenar el valor del parĆ”metro).





  • Dentro del Text Field de la descripciĆ³n colocamos los resources correspondientes.

  • Dentro del Text Field donde queremos almacenar el valor del parĆ”metro debemos colocar el nombre del parĆ”metro con la siguiente nomenclatura.

Agregar imagenes al reporte


Para agregar una imagen al reporte debemos hacer lo siguiente:

  1. Dentro de la secciĆ³n "Palette" seleccionar y hacer drag and drop del elemento "Image" en la banda deseada.

  2. Se abre una ventana en la cual se presentan varias opciones para cargar nuestra imagen. En este caso nosotros tenemos la imagen en la misma carpeta donde se encuentra el reporte y los archivos properties por lo tanto seleccionamos "Workspace resource" y damos clic en "OK".

  3. Seleccionamos la imagen y hacemos clic en el botĆ³n "OK".

NOTA: El formato de la imagen debe ser png.




Resultado:





Agregar grƔficos al reporte



Para agregar grƔficos al reporte debemos hacer los siguiente:

  • Dentro de la secciĆ³n "Palette" seleccionar y hacer drag and drop del elemento "Chart" en la banda "Summary".

  • Al momento de soltar el chart se abrirĆ” una ventana donde se muestran los distintos tipos de grĆ”ficos para utilizar como se muestra en la siguiente imagen.

  • Seleccionamos el chart "Bar3D Chart" y hacemos clic en "Next".



Luego se muestra la grƔfica seleccionada junto con las propiedades a modificar.







  • Se debe agregar un field en el campo "Value" y otro en el campo "Category" precionando el botonĀ 

    Ā que se encuetra al costado de los campos mencionados.

  • Luego seleccionamos el field de acuerdo a lo que queremos representar en nuestro grĆ”fico.




A continuaciĆ³n se agrega un nuevo valor de "Series" que sera la descripciĆ³n de lo que muestra el grĆ”fico y hacemos clic en "OK" como se indica a continuaciĆ³n.

Luego damos clic en "Finish".





LENGUAJE:

Agregar en el campo "resource boundle" dentro de las propiedades del reporte la palabra "language" como muestra la siguiente imagen.





Resultado diseƱo final:





Para generar el reporte y ver el resultado con datos debemos hacer lo siguiente:

  • Clic sobre el tab "Preview".

  • Seleccionar la base de datos.

  • Completar los parĆ”metros para filtrar la query.

  • Run.







Resultado Final









IMPORTANTE: Para transformar un numero a un time dentro de un field se debe utilizar la siguiente expresionĀ 

EJEMPLO PRACTICO: De nuestra consulta SQL obtenemos la cantidad de segundos hablados (ejemplo: CANTIDAD_HABLADO = 120) y queremos que en el reporte se muestre de la siguiente manera 00:02:00 siendo estos las horas, minutos y segundos hablado.

IF(($F{fieldname}==null),"0",String.format("%d:%02d:%02d", ($F{fieldname})/3600, (($F{fieldname})%3600)/60, ($F{fieldname})%60)).

ERROR COMUN: En muchos reportes esta expresion es utilizada SINĀ el IF lo que hace que se genere un error ya que se evalua el field dentro de la expresion String.format y no se controla si este es NULL.