Cómo vincular tablas de bases de datos Access con ADOX
===========================================
Dado que con 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
«Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security (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 siguiente ejemplo, también tiene en cuenta la posibilidad 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 New ADODB.Connection
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
' Establezco la conexión con la base de datos actual
With cnnActual
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\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:\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
--
Enrique Martínez «Softjaen» - 2002
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)