Mostrar imágenes en Reporting Services desde una base datos

Se me presentó el reto de mostrar en un reporte de Reporting Services ciertas imágenes relativas a registros en la base de datos. Pero cada registro debe tener su propia imagen. Entonces requería que en una tabla, cada registro tuviera un campo especifico para contener la imagen. Cómo se hace esto? tener en cuenta lo siguiente:

  • El tipo de dato IMAGE ya es obsoleto, no se debe usar más. Ahora debemos usar el tipo de dato varbinary
  • El tipo de dato varbinary soporta un tamaño específico. Puede ser de 100 (cien bytes), do 4000 (4 mil bytes) o se puede usar el parámetro max (varbinary(max)) que soporta un binario de hasta 2Gb. Todo dependerá de los tamaños de imagen que se desean cargar.
  • Es recomendable restringir los tamaños máximo de las imágenes, para que la información esté mejor controlada y no carguemos tanto la base de datos
  • Para cargar las imágenes a la base de datos se usa la función  OPENROWSET

Desarrollaré una prueba de concepto, creando una base de datos con una simple tabla de demostración, la cuál va a contener los registros con las imágenes:

Prestar atención a dos campos:

  • ImgRSMimeType: Este campo va a contener el tipo que utilizará reporting service para reproducir (render) la imagen (png, bmp, jpg, etc.)
  • ImgRS: es el campo de tipo binario que va a contener la imagen.

El siguiente paso es definir cómo se van a cargar las imágenes a la base de datos, convirtiéndolas en binarios. Como mencionamos al inicio, esto se logra con la función OPENROWSET. En este caso vamos a generar dos registros y vamos a incluir imágenes que son los logos de SQL Server, 2012 y 2014 respectivamente, ubicadas en la ruta D:\DBL. Lo hacemos de la siguiente manera:

Prestar atención a cómo se hace referencia a un archivo físico ubicado en una ruta en particular, y cómo se usa el parámetro SINGLE_BLOB para convertirlo a binario.

El siguiente paso es consumir esta tabla en un reporte de Reporting Services. En la siguiente imagen mostraré el reporte ya construido y pasare luego a explicar cada uno de los componentes identificados con números:

ImgRS1

1. Creamos un origen de datos sobre la base de datos que creamos para la prueba de concepto:

ImgRS2

2. Creamos un nuevo reporte. Solo incluiremos en ese reporte una tabla para listar los campos de la tabla preparada para la prueba de concepto, incluyendo las imágenes

3. Creamos un conjunto de datos, en el que listamos los registros de la tabla preparada para la prueba de concepto. En este caso no usamos procedimientos almacenados, si no simplemente una consulta:

ImgRS3

4. En la tabla del reporte, listamos los campos que deseamos visualizar, y en el campo de la imagen incluimos el objeto Imagen del Cuadro de Herramientas de Reporting Services. A ese objeto imagen lo configuramos de la siguiente manera:

ImgRS5

Se observa que el origen de la imagen es Base de datos y que el campo de la imagen es [ImgRS], el cual contiene el binario. Además, el tipo de imagen a reproducir se define con el campo [ImgRSMimeType].

Una vez diseñado y configuradas las diferentes partes del reporte, al momento de ejecutarlo se visualiza de la siguiente manera:

ImgRS6

Se observa que Reporting Services reproduce la imagen almacenada como binario en la base de datos, como parte de los registros mostrados en la tabla

Esta prueba de concepto sirve de base para utilizar otras formas de mostrar las imágenes,

Vínculos relacionados

Un comentario en “Mostrar imágenes en Reporting Services desde una base datos

Deja una respuesta

Tu dirección de correo electrónico no será publicada.