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