Como conectar JasperStudio a SAP HANA

JasperStudio trae precargado controladores para base de datos, pero no el de SAP HANA.

NOTA: Recuerda que los Data-sources son independientes, por lo que se debe configurar por cada datasource a menos que se agreguen las librerías en las carpetas del programa. Eso lo veremos en otra ocasión.

En este articulo damos por hecho que ya haz descargado e iniciado JasperStudio

Paso 1. Descargar el jar del JDBC

Lo mas importante es tener obtener el driver correcto, si no estas utilizando Maven o Gradle lo puedes descargar manualmente desde:

https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc

Vista de Maven Central:

NOTA : Hacer click en VIEW ALL

Una vez entrar a la lista de archivos descargar el correspondiente.

Vista de los archivos posibles a descargar.

Una vez descargado ubicarlo en una ruta apropiada según su forma de trabajo, como una carpeta para todos los jars o para todos los JDBC o por proyecto.

Referencia:
https://help.sap.com/docs/SAP_HANA_PLATFORM/0eec0d68141541d1b07893a39944924e/ff15928cf5594d78b841fbbe649f04b4.html

https://developers.sap.com/tutorials/hana-clients-jdbc.html

Paso 2. Configurar en JasperStudio.

Lo primero que debemos hacer es Agregar el DataSource.

Dado que estamos haciendo una conexión manual, sin usar jasperreport o un servidor EE, en la ventana que aparecerá elegiremos JDBC Connection:

JasperStudio: Ventana de opciones para nuevo adaptador

.

JasperStudio: Ventana de asistente para nueva conexión JDBC

Si hacemos click en el combobox del driver aparecerán muchas opciones pero no la de SAP HANA, por lo que debemos agregarlo manualmente.

Primero le pondremos el nombre: Conexion a SAP HANA Pruebas. y luego se hace click en el tab: ” Driver ClassPaht”

JasperStudio: Asistente de configuración de adaptador.

Al hacer click aparecerá una ventana de búsqueda para localizar el JAR, el que acabamos de descargar, el driver para SAP HANA.

Una vez localizado Regresamos al tab inicial yconfiguramos.

JasperStudio: Asistente de configuración de adaptador. Propiedades
  • 1) hacer click en el tab “Database Location”
  • 2) JDBC Driver Class: com.sap.db.jdbc.Driver
  • 3) JDBC URL: jdbc:sap://192.168.30.100:305 (la ruta y puerto del nuestro servidor)
  • 4) El username
  • 5) la clave
  • 6) Hacemos click en Test.
JasperStudio: Test OK

Si todo está correcto deberá aparecer este mensaje.

Paso 3. Probar.

Una vez configurado nuestro driver y el DataSource ya podemos probar nuestro reporte con datos.

¿como probamos el reporte?

JasperStudio : Ventana principal de trabajo.

En esta ventana, en el punto uno seleccionamos la vista de nuestro proyecto para ver todos los reportes.
En el punto 2, seleccionamos el reporte que nos interesa.

En el punto 3 podemos ver y/o editar la consulta del reporte.

y en el punto 4: es para ver la vista previa del reporte, si tiene parámetro, este pedirá que ingrese el valor para ejecutar la consulta apropiada.

Agregar imágenes en un reporte de JasperReport

Una de las características de Jaspersoft Reports es la capacidad de incluir gráficos estáticos (logotipos, por ejemplo) en los informes completos. Estos archivos gráficos (jpg, png, etc) normalmente se especifican en el archivo fuente del reporte el archivo JRXML registrándolos por referencia, lo que significa que lo que se almacena es la ruta absoluta o relativa mas el nombre de archivo, no el gráfico en sí. En una implementación empresarial o enfocado en reportes la norma es que el archivo fuente y los archivos de gráficos auxiliares se cargan en un servidor JasperReports para su ejecución.

Dependiendo de nuestra solución o del requerimiento podemos usar recursos externos relativos o cargar los datos desde una base de datos. En este post vamos a dar ejemplos de 4 escenarios y mostrando como hacerlo.

Imagen en JasperReport : Estas son las opciones del contenedor de imagen.

Opción 1 . Usando recursos Externos

Un recurso externo es la forma mas común de colocar una imagen en el reporte

Opción 2: Incrustando la imagen en el reporte (Base64)

Paso 1: codifica tu imagen en base64

Definición: Base64 es un estandar que permite tomar un archivo binario y codificarlo en caracteres ASCII. Como sabemos los archivos XML tienen limitaciones en cuanto a lo que pueden contener, por lo que codificar el archivo de imagen binario en base64 proporciona una forma de incrustar los datos de la imagen en XML manteniendonos dentro del ASCII de XML. Hay muchas opciones de codificar; en este caso puedes usar este codificador de imágenes Base64 online, al terminar lo que obtendrá es una cadena de texto que comienza así:

data:image/jpeg;base64,/9j/4AAQSkZJRAABCCCQEAY...

Esta cadena llamada URI DE DATOS contiene detalles al principio que no forman parte de los datos de la imagen en sí. Desde el inicio hasta la coma incluida – data:image/jpeg;base64,– debe eliminarse. El resto de la cadena son los datos de imagen codificados en base64 que vamos a utilizar.

imagen convertida en Base64

Paso 2: coloque los datos de la imagen base64 en una variable de informe

Primero debemos crear la variable.

Creando una variable en JasperReport.
Asignamos nombre a la variable, y dejamos el resto de los campos iguales.

Se deja todos los demás valores iguales (el nombre de clase de valor es java.lang.String, sin función de cálculo o tipo de incremento, el tipo de restablecimiento es Reporty sin datos en la expresión de valor inicial o el nombre de clase de fábrica de incrementador).

Paso 3: Agregar imagen al informe

Haga clic y arrastre un elemento de imagen desde la Paleta hasta el informe. Aparece un cuadro de diálogo “Crear nuevo elemento de imagen” con varias opciones para el “Modo de creación de imagen”, incluido un recurso de espacio de trabajo, una ruta absoluta o una URL. Elija la última opción, “Expresión personalizada”, e ingrese este fragmento de Java a continuación. Hay un lugar en el fragmento donde se incluye la variable con la imagen codificada en base64,  reemplácelo con el nombre de la variable del paso anterior.

Seleccione “Expresión personalizada” y pegue el fragmento de Java.
Expresion

Paso 4: agregue la importación de clase Base64 al informe

Último paso… para usar la Base64.decodeBase64función cuando se ejecuta el informe, necesitamos importar explícitamente esa clase cuando se ejecuta el informe. En el editor de informes hay pestañas para “Diseño”, “Fuente” y “Vista previa”. Haga clic en “Fuente” para ver el JRXML sin procesar. Debajo de la última línea que comienza con <property name="</code">y encima de la <querystring>línea, agregue esta línea:

<import value="org.apache.commons.codec.binary.Base64"></import>
Agregando la importacion de clase Paso 01.

Hemos terminado: Guarde y obtenga una vista previa de su informe, y verá la imagen incluida en el informe.

Las otros métodos de inserción desde la base de datos se describe en el siguiente post.

JasperReport: Usar imágenes dinámicas desde base de datos (Base64)

JasperReport: Usar imágenes dinámicas desde base de datos (Base64)

La forma mas común de usar logos o imágenes dinámicas en los reportes es que sean administrados via base de datos, en las cuales pueden almacenarse en binario y codificados en Base64. A continuación te mostraremos como hacerlo en estos 2 escenarios.

Software Utilizado: JasperStudio 6.19.0 de 2022.

Paso 1: Base de datos

Lo primero que necesitamos es tener nuestra tabla con los datos, en este ejemplo utilizaremos postgresql.

Estructura de la tabla Imágenes:

Paso 2: Importar los Campos

Se importan los campos al diseño/

Paso 3. Definir el elemento imagen.

El objeto imagen tiene varias formas de importar la imagen.

usaremos la opción 5: Expresión Personalizada

Escenario 1: Binario

Para mostrar una imagen de un campo binario es extremadamente fácil solo hay que poner la referencia del campo en la expresión como fuente.

Propiedad del Elemento Imagen.
Ventana de selección de campos.

eso es todo, la conversion se hace automáticamente.

Escenario 2: Base64

Aunque actualmente es raro que alguna empresa use imágenes se guardadas en Base64 tambien es posbible mostrarlas.

Para este escenario se requieren unos pasos adicionales.

Paso 1. Importar las librerías

JasperReport nos permite realizar programación dentro de los reportes, sea con Java o con Groovy, para poder manipular las cadena Base64 recuperada dela base de datos se necesitará solo una librearía.

En la ventana de imports se agregan las librerías.
Importando java.util.Base64

Luego agregamos la expresión personalizada al control de la imagen.

Eso es todo.

Reportes en Java con Jaspersoft Studio. Post 1 de 5

Por qué Jaspersoft Studio? En mi experiencia, los reportes son fundamentales en toda aplicación o software empresarial que creamos. Ellos nos muestran la información ya procesada que es el objetivo de nuestros desarrollo, presentar informes precisos, entendibles que permitan tomar decisiones asertivamente. Es por eso que en esta ocasión les queremos compartir acerca de jasperReports con Jaspersoft Studio, la herramienta de referencia en el mundo java para los reportes.

JasperReports es una biblioteca de creación de informes que tiene la habilidad de entregar contenido enriquecido al monitor, a la impresora o a ficheros PDFHTMLXLSCSV y XML.

Escrito completamente en java, por y para java,  puede ser usado en gran variedad de aplicaciones tanto EE (Enterprise), como SE(Standart), o de escritorio, puede servir reportes fijos y dinámicos.

Requerimientos previos a la instalación en ambiente Windows

Funciona en Windows XP / 7/8 con 32 o 64 bits, Linux (32 o 64 bits), MacOS X en 64 bits.

Procesador de 3GHZ o superior  (32/64). La cantidad de la memoria RAM es completamente  dependiente de la complejidad de los informes, se recomienda un valor de 1 GB dedicado a Jaspersoft de estudio, ya dado que en el sistema hay muchas otras cosas que requieren RAM se sugiere que el equipo tenga un mínimo de 4GB de RAM.


Se requiere una distribución completa de Java. Necesitas descargar el Java Development Kit (JDK) 1.6 o la ultima versión jdk-12.0.1_windows-x64_bin.exe

 

** No olvides el JDBC con el que te conectaras al motor de Base de datos, de otro modo no podrás acceder a los datos. 

 

Instalando Jaspersoft Studio 6.9.0 (windows)

1. Visitar la página https://community.jaspersoft.com/project/jaspersoft-studio/releases para bajarnos la última versión de JasperSoft Studio, en este caso la 6.9.0.

Pagina de descarga de Jaspersoft Studio

la primera vez nos mostrará una página para iniciar sesión o inscribirnos al sitio de la comunidad de Jaspersoft.

 

2. Después de finalizar la descarga del instalador, dar doble clic en el archivo TIB_js-studiocomm_6.9.0_windows_x86_64.exe

3. Clic en “I Agree” (estoy de acuerdo)

4. Seleccionar la carpeta donde deseamos instalar el programa, podemos dejar la ubicación por defecto y hacer clic en instalar.

5. Esperar que se instale el programa

6. Clic en Finish (Finalizar)

 

Descripción de la pantalla de JasperStudio

En este Lote de artículos vamos a utilizar MS SQL Server para nuestro ejercicios, por tanto, el paso posterior a la instalación de JasperSoft Studio 6.9.0  seria  Instalar el driver para Microsoft SQL Server: 

 

El driver que bajemos dependerá de la versión de SQL Server que tengamos instalada en nuestra computadora. Para eso visitaremos la página https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017  

Copiar el archivo sqljdbc4.jar a la carpeta: C:Program FilesTIBCOJaspersoft Studio-6.9.0featuresjre.win32.win32.x86_64.feature_1.8.0.u151jrelibext

 

NOTA

Opcionalmente, si queremos usar la autenticación con el usuario de Windows o seguridad integrada con SQL Server: 

Copiar el archivo sqljdbc_auth.dll a la carpeta: C:Program FilesTIBCOJaspersoft Studio-6.9.0featuresjre.win32.win32.x86_64.feature_1.8.0.u151jrebin

Para que surtan efectos los cambios debemos cerrar y volver a abrir la aplicación de JasperSoft Studio.

Format Style

Las normas de estilo son fundamentales tanto para crear una identidad como para transmitir correctamente. Desde el momento en que decidimos crear un proyecto, la coherencia visual es importante, UX y UI están de la mano, y en los reportes no puede ser la exception.

Por esta razón aconsejamos crear un estilo propio que se aplique a todos los estilos de los reportes que vamos a crear.

 

Propuesta de normativa para formateo de reportes

 

Elemento de sección

Norma a aplicar

No.

Descripción

Fuente/estilo/bordes

Tamaño

Alineación

Encabezado del reporte

 

1

Nombre de Entidad

Arial + Mayúscula + Negrita

12

Centrado

2

Unidad administrativa de la entidad

Arial + Mayúscula + Negrita

10

Centrado

3

Código del reporte

Arial + Negrita

9

Derecha

4

Título

Arial + Mayúscula + Negrita

11

Centrado

5

Subtítulo

Arial + Mayúscula + Negrita

10

Centrado

6

Periodo de Fecha

Arial + Mayúscula + Negrita

9

Centrado

Agrupaciones

 

7

Encabezado y subtitulo de la agrupación

Arial Narrow + Negrita con borde superior e inferior

8

Izquierda

8

Detalle de la agrupación

Arial Narrow

8

 

9

Sub-total por agrupación

Arial Narrow + Negrita con borde superior

9

 

Detalle

 

10

Etiquetas o nombres de columna

Arial Narrow + Negrita con borde superior e inferior

8

Izquierda

11

Detalle

Arial Narrow

8

 

Pie del reporte

 

12

Versión, módulo, página # de ## páginas, usuario, fecha

Arial Narrow con línea fina (0.6 px) parte superior de las etiquetas

8

 

Sumatoria o suma a nivel de reporte

 

13

Suma

Arial Narrow con borde superior

9

 

Ejemplo de estilos.

 

Elemento

Ejemplo

Ejemplo de Negrita, Cursiva y Subrayado en texto estático

 

Hola Mundo

 

 

Ejemplo de Negrita  y Cursiva y fondo amarillo en texto estático

 

Hola Mundo

 

 

Ejemplo de Negrita y Cursiva y color azul en texto estático

 

Hola Mundo

 
 

textElement

 

 

Ejemplo de Negrita, fondo verde, color de la fuente rojo en campo de texto

+ $F{Campo} +

 

Aplicando formato a números y fechas

Elemento

Ejemplo

Formato para campos numéricos

” (C$ ” + new java.text.DecimalFormat(“#,##0.00”).format($F{Total}) + “)”

Formato para campos de fechas

(new SimpleDateFormat(“dd/MM/yyyy”).format($F{Fecha}))

Mostrar un elemento si el número de página es par

new Boolean($V{PAGE_NUMBER}%2==0 )

Mostrar un elemento si el número de página es 1

new Boolean($V{PAGE_NUMBER}.intValue()==1)

Mostrar un elemento si el valor de un campo de la consulta es 1

new Boolean($F{Campo}.equals(new Integer(1)) ? true  : false)

Condicionales en campos de texto

( $F{Referencia}.intValue() == 1

? “Referencia tiene valor 1”

:    (  $F{Referencia}.intValue() == 3

      ? “Referencia tiene valor 3”

    :”Referencia tiene un valor distinto a 1 ó 3“    )

)

 

 

Nosotros y terceros seleccionados utilizamos cookies o tecnologías similares con fines técnicos y, con su consentimiento, para otras finalidades (“interacciones y funcionalidades básicas”, “mejora de la experiencia”, “medición” y “segmentación y publicidad”) según se especifica en la política de cookies. Usted es libre de otorgar, denegar o revocar su consentimiento en cualquier momento.    Configurar y más información
Privacidad