Palabras clave:
vinculación, tablasAutor:
KALKALINExtraído de:
MVP-ACCESS.comNecesito poder revincular las tablas de una base de datos externa.
Y el mismo se respondió con algo parecido a esto (que yo he estandarizado a mi conveniencia)
Copiar en un módulo independiente. Antes de llamar, asignar los valores a la estructura uLinkTable
Option Compare Database
Option Explicit
Public Type udtLinkTable
RemoteDatabase As String
RemoteTableName As String
LocalTableName As String
End Type
Public uLinkTable As udtLinkTable
Public Sub CrearTablaVinculada()
Dim dbsActual As DAO.Database
Dim tdfTableLink As DAO.TableDef
Dim rstRemoto As DAO.Recordset ' para las pruebas (en producción borrar y eliminar las últimas líneas)
'Ubicacion de la base de datos remota se toma de uLinkTable.RemoteDatabase
'Ubicacion de la base de datos local se toma de CurrentProject.FullName
' Abre la base de datos a la que se le va a agregar la tabla vinculada.
Set dbsActual = OpenDatabase(CurrentProject.FullName)
' Crea una tabla vinculada que se conecta a una base de datos Access
' uLinkTable.LocalTableName será el nombre de la nueva tabla vinculada (en la base local)
Set tdfTableLink = dbsActual.CreateTableDef(uLinkTable.LocalTableName)
'creamos la conexion
tdfTableLink.Connect = ";DATABASE=" & uLinkTable.RemoteDatabase & ";"
'Aqui uLinkTable.LocalTableName es el nombre de la tabla de origen (si no existe da error)
tdfTableLink.SourceTableName = uLinkTable.RemoteTableName
dbsActual.TableDefs.Append tdfTableLink
Set rstRemoto = dbsActual.OpenRecordset(uLinkTable.LocalTableName)
'muestro la cantidad de registros de la tabla vinculada (Algo sencillo para ver si todo ha salido bien)
rstRemoto.MoveLast
MsgBox rstRemoto.RecordCount
rstRemoto.Close
End Sub
La ventaja de este método es que no "levanta" la ventana de objetos de la base de datos (interesante opción en clientes quisquillosos)