Mostramos paso a paso cómo añadir un módulo, macro y formulario en una base de datos Microsoft Access, que permita actualizar (modificar o cambiar) el DSN (cadena de conexión ODBC o DNS) de las tablas vinculadas. Para ello usaremos VBA (Visual Basic for Application). Además, mostraremos un método para actualizar todas las tablas vinculadas de una base de datos Access. Usaremos Access 97, auunque el proceso es similar en Access 2000, Access 2003 e incluso en las nuevas versiones de Access que siguen manteniendo VBA.

Base de datos Microsoft Access con tablas vinculadas, qué es una tabla vinculada en Access

La base de datos Microsoft Access (en este tutorial usaremos la versión 97, pero es perfectamente válido para el resto de versiones 2000, 2003, 2008, etc.) permite utilizar tablas de la propia base de datos y tablas de motores de base de datos externos. En una base de datos Microsoft Access se puede trabajar con tablas de otras bases de datos usando ODBC, a estas tablas externas se les llama tablas vinculadas.

A continuación mostramos un tutorial donde explicamos paso a paso cómo crear un origen de datos ODBC y cómo vincular una tabla de MySQL en una base de datos Access:

Lo que explicaremos en este tutorial es cómo cambiar el DSN de una tabla ya vinculada en Access. Este procedimiento es muy útil cuando tenemos varias tablas vinculadas en una base de datos Access y necesitamos cambiar usuario y contraseña o IP o nombre de servidor del motor de base de datos de las tablas vinculadas. Este procedimiento, una vez cambiado el ODBC en el equipo, nos permitirá actualizar el DSN correspondiente en todas las tablas vinculadas de forma automática.

Un ejemplo de base de datos Access con tablas vinculadas, en el ejemplo, las tablas CLIENTES y FACTURAS corresponden a una base de datos Oracle 11g, han sido vinculadas usando el ODBC correspondiente (como indicamos en el tutorial anterior):

Base de datos Microsoft Access con tablas vinculadas, qué es una tabla vinculada en Access

Crear formulario en Access para modificar la vinculación DSN automática de tablas

Abriremos nuestra base de datos Microsoft Access, en la pestaña «Tablas» tendremos las tablas tanto de la propia base de datos como las tablas vinculadas. En nuestra base de datos de ejemplo tenemos dos tablas vinculadas de un origen de datos ODBC correspondientes a un servidor de base de datos Oracle: CLIENTES y FACTURAS:

Crear formulario en Access para modificar la vinculación DSN automática de tablas

A continuación explicamos paso a paso cómo añadir la utilidad de actualizar el vínculo DSN de todas las tablas vinculadas de esta base de datos de forma automática. Para ello pulsaremos en la pestaña «Formularios» y pulsaremos en «Nuevo»:

Crear formulario en Access para modificar la vinculación DSN automática de tablas

Seleccionaremos «Vista Diseño» y pulsaremos «Aceptar»:

Crear formulario en Access para modificar la vinculación DSN automática de tablas

Añadiremos los siguientes componentes al formulario:

  • Un Cuadro de texto para introducir el DSN, para ello pulsaremos en el botón de «Herramientas» y añadiremos el «Cuadro de texto»:
Crear formulario en Access para modificar la vinculación DSN automática de tablas

Estableceremos la propiedad «Nombre» del cuadro de texto a «txtDSN». Para ello pulsaremos con el botón derecho del ratón sobre el Cuadro de texto y seleccionaremos «Propiedades»:

Crear formulario en Access para modificar la vinculación DSN automática de tablas

En»Nombre» escribiremos «txtDSN»:

Crear formulario en Access para modificar la vinculación DSN automática de tablas

Nota: es muy importante establecer nombres exactos que posteriormente recordemos a los componentes que indicamos que han de añadirse al formulario. Estos nombres serán usados más adelante en el código VBA por lo que deben coincidir.

  • Un Cuadro de lista que usaremos para mostrar el progreso de las tablas que se van vinculando desde el código VBA, en la propiedad «Nombre» introduciremos «lsLista»:
Crear formulario en Access para modificar la vinculación DSN automática de tablas
  • Añadiremos otro Cuadro de texto al final en el que mostraremos la tabla a la que se le está actualizando el vínculo DSN, lo llamaremos «txtResultado»:
Crear formulario en Access para modificar la vinculación DSN automática de tablas
  • Añadiremos un par de Botones de comando, uno para ejecutar el proceso y otro para cerrar el formulario. Más adelante asignaremos la acción correspondiente al botón «Readjuntar tablas» (será la ejecución de una Macro). Al botón de cerrar el formulario podremos asignarle la acción de forma automática con el asistente, añadiendo un «Botón de comando» desde la barra de herramientas nos mostrará un asistente, en «Categoría» elegiremos «Operaciones con formularios» y en «Acciones» elegiremos «Cerrar formulario». Así el asistente añadirá el código VBA oportuno para cerrar el formulario:
Crear formulario en Access para modificar la vinculación DSN automática de tablas

El código VBA del botón Cerrar formulario:

Una vez añadidos todos los componentes al formulario lo cerraremos y pulsaremos «Sí» en el cuadro de diálogo de aviso:

Crear formulario en Access para modificar la vinculación DSN automática de tablas

Introduciremos un nombre para el formulario, por ejemplo «formReadjuntarTablas» y pulsaremos «Aceptar»:

Crear formulario en Access para modificar la vinculación DSN automática de tablas

Más adelante, como ya hemos dicho, volveremos a la edición del formulario para establecer la acción que realizará el botón «Readjuntar tablas». Ahora mismo no podemos pues aún no hemos creado la macro para asociarla a dicha acción.

Podemos descargar de forma gratuita la base de datos Access de ejemplo de este tutorial:

Crear módulo VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Tras crear el formulario y sus componentes y asignarles un nombre (necesario para el código VBA que generaremos ahora), crearemos un nuevo Módulo con código VBA, en este módulo crearemos las funciones necesarias para obtener el número de tablas vinculadas (excluyendo otro tipo de tablas) de nuestra base de datos Access, modificar el vínculo DSN ODBC de cada tabla y mostrar el resultado en el formulario.

Para crear un nuevo módulo en Access, pulsaremos en la pestaña «Módulos» y en el botón «Nuevo»:

Crear módulo VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Pegaremos el siguiente código VBA en el nuevo módulo:

Crear módulo VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

El código fuente completo del módulo VBA para actualizar el vínculo DSN de todas la tablas vinculadas de una base de datos Access:

Una vez pegado el código cerraremos el módulo:

Crear módulo VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Guardaremos los cambios:

Crear módulo VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

E introduciremos un nombre para el módulo, por ejemplo «utilidades»:

Crear módulo VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Podemos descargar de forma gratuita la base de datos Access de ejemplo de este tutorial:

Crear macro para ejecutar código VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Tras crear el formulario y el módulo VBA añadiremos ahora una macro que nos permitirá ejecutar la función cambiarDSNTodasTablas() del código del módulo VBA anterior. Dicha función será la que realice todo el proceso de actualización del vínculo de todas las tablas de nuestra base de datos Access.

Para crear una nueva macro pulsaremos en la pestaña «Macro» y en el botón «Nuevo»:

Crear macro para ejecutar código VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

En «Acción» elegiremos EjcutarCódigo y en «Nombre de función» introduciremos cambiarDSNTodasTablas()

Crear macro para ejecutar código VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Cerraremos la nueva macro y guardaremos los cambios:

Crear macro para ejecutar código VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Introduciremos un nombre para la macro, por ejemplo ReadjuntarTablas:

Crear macro para ejecutar código VBA para actualizar el DSN de las tablas vinculadas de una base de datos Access

Podemos descargar de forma gratuita la base de datos Access de ejemplo de este tutorial:

Aplicar la acción correspondiente al botón de comando Readjuntar Tablas en el formulario

Una vez creado el formulario, añadido el módulo VBA y la macro correspondiente volveremos a la edición de nuestro formulario, desde la pestaña «Formularios», seleccionando el formulario y pulsando en «Diseño». Desde el diseño del formulario pulsaremos con el botón derecho del ratón sobre el botón de comando «Readjuntar tablas» y en el menú emergente seleccionaremos «Propiedades»:

Aplicar la acción correspondiente al botón de comando Readjuntar Tablas en el formulario

En la propiedad/evento «Al hacer clic» introduciremos el nombre de la macro creada anteriormente «ReadjuntarTablas»:

Aplicar la acción correspondiente al botón de comando Readjuntar Tablas en el formulario

De esta forma el botón ejecutará la macro y la macro, a su vez, ejecutará la función cambiarDSNTodasTablas() del módulo VBA.

Podemos descargar de forma gratuita la base de datos Access de ejemplo de este tutorial:

Probar formulario para readjuntar (modificar vínculo DSN ODBC) tablas en Access

Desde la pestaña «Formularios» de nuestra base de datos Access, seleccionaremos el formulario creado y pulsaremos en Abrir:

Probar formulario para readjuntar (modificar vínculo DSN ODBC) tablas en Access

Introduciremos en DSN la cadena de conexión a ODBC con el formato, usuario y contraseña correctos, por ejemplo:

ODBC;DSN=FACTURACION;UID=usufacturas;PWD=contraseña;DBQ=BDFACTURAS

donde:

  • DSN=FACTURACION: será el nombre del origen de datos ODBC.
  • UID=usufacturas: será el usuario de acceso a la base de datos ODBC.
  • PWD=contraseña: será la contraseña del usuario anterior.
  • DBQ=BDFACTURAS: será el nombre de la base de datos ODBC.

Una vez introducido el DSN correcto pulsaremos en «Readjuntar tablas»:

Probar formulario para readjuntar (modificar vínculo DSN ODBC) tablas en Access

Desde el código VBA recorre todas la tablas de la base de datos Access y cuenta las que son tablas vinculadas, luego muestra un mensaje al usuario indicando el número de tablas vinculadas y si desea continuar con el proceso de actualización del DSN ODBC. Para continuar pulsamos en «Sí»:

Probar formulario para readjuntar (modificar vínculo DSN ODBC) tablas en Access

El código VBA se ejecutará e irá actualizando el DSN ODBC de cada tabla vinculada de nuestra base de datos Access y mostrando en el formulario el resultado de cada vinculación. Una vez finalizado el proceso nos mostrará un mensaje indicándolo:

Probar formulario para readjuntar (modificar vínculo DSN ODBC) tablas en Access

Como vemos el código fuente VBA puede ser muy útil para automatizar tareas que de lo contrario tendríamos que llevar a cabo manualmente.

Podemos descargar de forma gratuita la base de datos Access de ejemplo de este tutorial:

Comprobar cadena de conexión DSN ODBC de las tablas vinculadas en Access

Microsoft Access nos permite consultar los objetos del sistema y sus valores. Entre estos objetos se encuentran las tablas vinculadas y el string de conexión DSN correspondiente. Para consultarlo deberemos mostrar las tablas ocultas y de sistema, para ello, en nuestra base de datos Access, accederemos al menú «Herramientas» – «Opciones»:

Comprobar cadena de conexión DSN ODBC de las tablas vinculadas en Access

En la pestaña «Ver» marcaremos «Objetos ocultos» y «Objetos de sistema», pulsaremos «Aceptar»:

Comprobar cadena de conexión DSN ODBC de las tablas vinculadas en Access

En la pestaña «Tablas» de nuestra base de datos Access nos aparecerán objetos ocultos, entre ellos MSysObjects, lo seleccionaremos y pulsaremos «Abrir»:

Comprobar cadena de conexión DSN ODBC de las tablas vinculadas en Access

En esta tabla de Access protegida (no se puede modificar directamente) podremos comprobar y consultar las tablas vinculadas actualizadas anteriormente y sus cadenas de conexión DSN en el campo Connect:

Comprobar cadena de conexión DSN ODBC de las tablas vinculadas en Access

Descarga gratuita de la base de datos Access en formato Access 97 con el formulario, la macro y el módulo VBA

A continuación mostramos enlace a la descarga gratuita de una base de datos Microsoft Access que incluye el formulario, la macro y el módulo VBA anteriores: