Cómo vincular una tabla de una base de datos Access
Por Enrique Martínez Montejo
Última revisión: 01/11/2004
 

Dado que con la biblioteca Microsoft ActiveX Data Object (ADO) no se pueden vincular tablas de bases de datos Access, no nos queda más remedio que recurrir a la biblioteca de DAO o hacerlo con la biblioteca de ADOX, la cual es una extensión de los objetos y del modelo de programación de ADO.

Necesitaremos referenciar en nuestro proyecto Visual Basic la biblioteca Microsoft ADO Ext. 2.x for DDL and Security, para poder tener acceso a los objetos Catalog y Table de la base de datos.

El ejemplo que se detalla a continuación, también tiene en cuenta la posibilidad de que la base de datos, cuya tabla queremos vincular, esté protegida con contraseña. Si es el caso, necesitaremos pasar dicha contraseña mediante la propiedad correspondiente del objeto Table, antes de añadir dicha tabla a la colección Tables del objeto Catalog, de lo contrario, nos devolverá el error en tiempo de ejecución No es una contraseña válida:

 objTable.Properties("Jet OLEDB:Link Provider String") = "MS Access;Pwd=Mi_Contraseña"

El siguiente código, crea una nueva tabla [Tabla Vinculada] en la base de datos activa, la cual está vinculada a la [Tabla B] de una segunda base de datos:

Dim cnnActual As ADODB.Connection
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Establezco la conexión con la base de datos actual
Set cnnActual = New ADODB.Connection
With cnnActual
    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                        "Data Source=C:\Mis documentos\Bd1.mdb;"
    .Open
End With

' Abro el catálogo
Set cat = New ADOX.Catalog
cat.ActiveConnection = cnnActual

' Creo la nueva tabla
Set tbl = New ADOX.Table
tbl.Name = "Tabla Vinculada"
Set tbl.ParentCatalog = cat

' Establezco las propiedades para crear el vínculo con la tabla
' de la segunda base de datos

With tbl
    .Properties("Jet OLEDB:Link Datasource") = "C:\Mis documentos\Bd2.mdb"
    .Properties("Jet OLEDB:Remote Table Name") = "Tabla B"
    .Properties("Jet OLEDB:Create Link") = True

    ' Establezco la contraseña si es necesario
    '.Properties("Jet OLEDB:Link Provider String") = "MS Access;Pwd=Mi_Contraseña"
End With

' Añado la tabla a la colección Tables
cat.Tables.Append tbl

' Cierro la conexión
cnnActual.Close 

 

Otros enlaces de interés:

Cómo crear una base de datos Access

Cómo crear una tabla de Access

Cómo eliminar una tabla de Access

Cómo añadir una columna a una tabla de Access ya existente

Cómo crear un índice en una tabla

Cómo vincular a una base de Access una tabla de una base de datos SQL Server

Cómo vincular a una base de Access datos procedentes de otros orígenes de datos

Colección de ejemplos de la biblioteca de ADOX


Enrique Martínez Montejo - 2004

NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.

NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.