Vincular imágenes a tablas de Access sin "engordar" la base de datos

Autoría: Luis Angel Gil Gambarte

Cuando en una tabla de una base de datos de Access queremos insertar imágenes correspondientes a cada uno de los registros (por ejemplo las fotos de los empleados en una tabla de Empleados o bien las fotos de cada uno de los artículos en una gran tabla de Artículos –pensemos en miles de artículos-), se define en la estructura de la tabla un campo de tipo Objeto OLE para albergar dichas imágenes.

Si cada archivo de imagen ocupa unos cuantos bytes o kbytes (dependiendo de la resolución y calidad de la imagen),  el aumento de tamaño de la tabla y en consecuencia de la base de datos es desproporcionada.

¿Cómo solventar esto?

Si en la tabla de clientes definiéramos (como ejemplo en esta estructura mínima) los siguientes campos:

 

CAMPO

TIPO

TAMAÑO

IdCliente

Autonumérico (por ejemplo)

Entero largo

Nombre

Texto

50

Foto

Objeto OLE

 

 

Nos “engordaría” la tabla a medida que introdujéramos las imágenes en ese campo FOTO.

Lo que debemos hacer es definir la tabla con esta estructura:

 

CAMPO

TIPO

TAMAÑO

IdCliente

Autonumérico (por ejemplo)

Entero largo

Nombre

Texto

50

RutaFoto

Texto

50

 

En este campo RutaFoto introduciremos la ruta hacia el archivo de imagen que se encontrará en nuestro disco duro o bien ubicado en una ruta de una unidad de red.

La ruta será de la forma:   C:\FOTOS\MARÍA.JPG

Y sería gestionada como un contenido de texto.

Pero, ¿Cómo hacer para que en un formulario o bien en un informe de MS Access veamos, no la ruta de texto que apunta a nuestra imagen sino la imagen dentro de un control de tipo imagen insertado en el formulario o informe?

PARA FORMULARIOS

Insertaremos en el formulario el campo RutaFoto y un control desde la barra de herramientas de la pantalla de diseño de formularios de Imagen. Le asociamos cualquier imagen que tengamos en C: (o bien, después de insertada una imagen, desde sus propiedades de Formato especificamos Imagen = (ninguna), modo de cambiar el tamaño = Extender y le adjudicamos, en nuestro ejemplo el nombre ImagenCliente.

Si ese control de Imagen lo llamamos, por ejemplo, ImagenCliente, deberemos conseguir visualizar en él la imagen que se corresponde con la ruta de texto introducida en el campo RutaFoto.

Para ello, por ejemplo insertaremos en las propiedades del campo RutaFoto, bajo el evento de Después de Actualizar, el siguiente código VBA (Visual Basic Aplications):

 

Private Sub RutaFoto_AfterUpdate()

If Not IsNull(Me.RutaFoto) Then

   Me.ImagenCliente.Picture = Me.RutaFoto

 

Else

    Me.ImagenCliente.Picture = ""

End If

End Sub

 

Así, llevaremos y por lo tanto visualizaremos en el control de la imagen (ImagenCliente), la imagen (Picture) que corresponde a la ruta introducida en el campo RutaFoto.

De este modo, el archivo de la foto (el de todas las fotos) reside en el disco duro fuera de ningún campo de nuestra tabla de, por ejemplo Clientes.

Sería factible ejecutar este “trozo” de código bajo cualquier otro evento más idóneo bajo nuestro punto de vista (o quizás creando un botón de comando y asociando a su “clic” ese código).

Lo explicado para los formularios, es idéntico para ver las imágenes en un informe.

 

NOTA: Teclear e introducir la ruta hacia cada archivo de imagen, es más engorroso y también solucionable mediante código, por eso adjunto una base de datos llamada Fotos Vinculadas.mdb para que indagando en los eventos de los controles del formulario Clientes, en el módulo VBA y en la macro puedas conocer o aplicar esto a nuestra base de datos. Observemos como lo único que se guarda en la tabla de clientes es la ruta y no la imagen.

¿Te interesa aprender sobre Access? Empieza a usar Access desde cero o amplía tus conocimientos de Access y conviértete en un experto.

 

 

 

Sigue al día con nuestra newsletter

Indícanos los temas que más te interesan:

Política de privacidad

ADR Formación utiliza cookies propias y de terceros para fines analíticos anónimos, guardar las preferencias que selecciones y para el funcionamiento general de la página.

Puedes aceptar todas las cookies pulsando el botón "Aceptar" o configurarlas o rechazar su uso pulsando el botón "Configurar".

Puedes obtener más información y volver a configurar tus preferencias en cualquier momento en la Política de cookies