Vincular y borrar tablas automáticamente en Access usando VBA

Escrito por Administrador

16 de diciembre de 2021

Hoy vamos a aprender a vincular y borrar tablas automáticamente en Access usando VBA.

Sobretodo, lo utilizaremos cuando vayamos a crear una copia de seguridad automática de nuestra BBDD a final de año. Así, podremos archivar las tablas antiguas y crear las nuevas.

Además, a modo de ejemplo, traigo un programa muy sencillito pero que ilustrará a la perfección la metodología a seguir. Consta de dos archivos, uno de datos (con dos tablas) y otro con el programa (un único formulario).

bloquear-access-fecha
bloquear-access-fecha

Dicho formulario dispone de dos botones: uno para vincular las tablas del archivo de datos y otro para borrarlas.

bloquear-access-fecha

A continuación, os dejo el código a implementar en cada uno de los botones,

Private Sub Importar_tablas_Click()

Dim dbsActual As DAO.DataBase
Dim tdfProductos As DAO.TableDef
Dim strBDRemota As String
Dim strBDLocal As String
Dim rstRemoto As DAO.Recordset

'Ubicacion de la base de datos remota (donde se encuentra la tabla)

strBDRemota = "C:\Prueba\Vincular_tablas_vba_Datos.accdb"

'Ubicacion de la base de datos Local (la que recibirá la tabla vinculada)

strBDLocal = "C:\Prueba\Vincular_tablas_vba_Programa.accdb"

'Abrimos la base de datos a la que se le va a agregar la tabla vinculada

Set dbsActual = OpenDatabase(strBDLocal)

'Creamos la tabla vinculada "Movimientos" y su conexión

Set tdfMovimientos = dbsActual.CreateTableDef("Movimientos")
tdfMovimientos.Connect = ";DATABASE=" & strBDRemota & ";"
tdfMovimientos.SourceTableName = "Movimientos"
dbsActual.TableDefs.Append tdfMovimientos

'Creamos la tabla vinculada "Servicios" y su conexión

Set tdfServicios = dbsActual.CreateTableDef("Servicios")
tdfServicios.Connect = ";DATABASE=" & strBDRemota & ";"
tdfServicios.SourceTableName = "Servicios"
dbsActual.TableDefs.Append tdfServicios

End Sub

Private Sub Borrar_tablas_Click()

Dim dbs As DAO.DataBase

Set dbs = CurrentDb()

'Borramos las tablas

dbs.Execute "DROP TABLE Movimientos"
dbs.Execute "DROP TABLE Servicios"

End Sub

En primer lugar, el código define las bases de datos origen y destino para la vinculación de tablas para, posteriormente, crearlas y vincularlas.

Para el código de borrado, simplemente definimos la base de datos actual y borramos las tablas una a una.

Si tienes cualquier duda con el código, no dudes en preguntarme a través de los comentarios.

A continuación, vamos a ver cómo funciona usando el ejemplo.

Lo primero que tienes que hacer es copiar los dos archivos (datos y programa) en la siguiente ruta C:\Prueba.

Una vez lo hayas hecho, pulsa el botón Importar tablas. Después, pincha en cualquier sitio sobre el panel de navegación y presiona F5 para actualizar. Verás que aparecen vinculadas las dos tablas del archivo datos.

bloquear-access-fecha

Si ahora pulsamos el botón Borrar tablas y actualizamos el panel de navegación, desaparecerán.

bloquear-access-fecha

Espero que te haya sido de utilidad este post y que hayas aprendido a vincular y borrar tablas automáticamente en Access usando VBA.

Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.

Un saludo y hasta la próxima.

Si te ha servido y quieres donar

Descarga el archivo del ejemplo

10 Comentarios

  1. Avatar

    Hola, gracias por el código, ¿cómo se actualiza con vb en lugar de pulsar F5?

    Responder
      • Avatar

        Hola, gracias por responder. Con Me.Refresh no la muestra. La cuestión es que aunque no aparezca visible la tabla que acabo de vincular, se supone que todo funcionará bien no?

        También lo he intentado así, pongo el nombre de tu ejemplo, pero nada:
        tdfServicios.Refresh

        Responder
        • Avatar

          perdón, sería tdfServicios.RefreshLink

          Responder
          • Avatar

            Lo encontré 🙂

            Es RefreshDatabaseWindow

          • Avatar

            Hola Lidia!

            Ese comando se emplea para actualizar después de haber creado o borrado un objeto. Pensaba que se trataba de refrescar datos. Me alegra que lo hayas conseguido resolver.

            Saludos.

  2. Avatar

    Buenas tardes, por favor quisiera su colaboración y orientación y si tiene un ejemplo.
    Tengo 5 tablas vinculadas a una base de datos, las bases están en un ruta N: en mi equipo local. Pero si yo abro la vista base de datos en otro equipo, esa N: la tienen configurada como O: ó como P:, Entonces quisiera saber si hay alguna manera de cambiar la ruta de la unidad por un cuadro de dialogo cosa que el usuario se le indique donde debe buscar las tablas para que se vinculen nuevamente, porque siempre he tenido que ingresar a la base de datos como administrador e ir a las tablas y desde el menú Conceptual revincular de manera manual las tablas de la base de datos una a una.
    Quedo atento a sus amables comentarios y si es posible colaboración. Gracias de antemano

    Responder
    • Avatar

      Hola Fernando,

      Sería cuestión de habilitar un campo en el que introducir la unidad donde se encuentran las tablas vinculadas y hacer uso del mismo en el código cuando llames a la ruta de vinculación de tablas tal y como tengo en este post.

      Si tienes cualquier problema, no dudes en crear un hilo en el foro y subir tu archivo para poder ayudarte.

      Saludos.

      Responder
  3. Avatar

    Excelente articulo sobre borrar y vincular tablas por medio de VBA

    Responder
    • Avatar

      Gracias César. Por aquí andamos para cualquier cosa. Un saludo.

      Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Últimas publicaciones

Categorías

marzo 2024
LMXJVSD
 123
45678910
11121314151617
18192021222324
25262728293031

Debates en el foro

Avatar
Formularios con ADO

Contacto