Vincular tablas ACCESS al abrir la BD

Tengo una BD Access solo con tablas (BD_TABLAS) y otra con el resto de cosas (BD_TRABAJO)
La BD_TRABAJO tiene vinculadas las tablas de (BD_TABLAS).
Están en la misma carpeta pero para diferentes empresas clientes hay diferentes rutas para dicha carpeta.
Mi problema viene con que cada vez que hago una modificación en BD_TRABAJO tengo que volver a hacer la vinculación.
¿Cómo puedo hacer para que las tablas se vinculen en el momento que se abre la BD_TRABAJO?
(Por ejemplo en el evento Form_Load del formulario de inicio. )
He visto que se hace con ADOX pero esa referencia no me aparece en los módulos de VB de access.
Respuesta
1
Si no dispones de ADO, no podrás hacerlo desde VBA.
Puedes utilizar una macro, y llamarla AUTOEXEC. Con esa macro podrás ejecutar la acción VincularTabla al iniciar la base de datos.
Si no necesitas hacerlo desde el inicio de la Base de datos, llama la macro con otro nombre cualquiera, y ejecutala desde el evento load del formulario en cuestión.
Ya me contaras.

2 respuestas más de otros expertos

Respuesta
2
Te pongo un ejemplo a ver si te sirve... Saludos,
Public Sub CrearTablaVinculada()
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
   strBDRemota = "C:\Documents and Settings\Usuario\Mis documentos\BaseRemota.mdb"
   'Ubicacion de la base de datos Local (Recibirá la tabla vinculada) 
   strBDLocal = "C:\Documents and Settings\Usuario\Mis documentos\BaseLocal.mdb"
   ' Abre la base de datos a la que se le va a agregar la tabla vinculada.
   Set dbsActual = OpenDatabase(strBDLocal)
   ' Crea una tabla vinculada que se conecta a una base de datos Access
   '"ProductosVinculada" será el nombre de la nueva tabla vinculada (en la base local)
   Set tdfProductos = dbsActual.CreateTableDef("ProductosVinculada")
   'creamos la conexion
   tdfProductos.Connect = ";DATABASE=" & strBDRemota & ";"
   'Aqui "Productos" es el nombre de la tabla de origen (si no existe da error)
   tdfProductos.SourceTableName = "Productos"
   dbsActual.TableDefs.Append tdfProductos
   Set rstRemoto = dbsActual.OpenRecordset("ProductosVinculada")
   '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
Si, si. Me sirve muy bien.
Para ser perfecto me falta que si existe dicha vinculación la borre previamente
Gracias de antemano
Si no te importa, puntúa mi ayuda.
Respuesta
1
Si te he entendido, supongo que has creado una aplicación con un MDB con el programa y otro con las tablas. Lo has incorporado en varios equipos de distintas empresas y cada una trabaja por separado. Si la aplicación está en un equipo por empresa, lo mejor es ubicar las tablas en una dirección que sea igual para todos, así si las tablas están en C:\Archivos de programa\TablasBases , en todos los equipos, ya no tendrías que vincularlas para cada empresa, ya que el nombre del vinculo sería el mismo.
En caso de que no fuera posible, yo crearía una tabla con los nombres de equipos y ruta a las tablas, y otra con los nombres de las tablas.
En el formulario de apertura en caso de que el vinculo fuera distinto detectaría un error en la lectura de una tabla y borraría las tablas existentes y revincularía todas las tablas a la ruta especificada en la tabla de nombre de equipos.
Analiza esta propuesta y me comentas.
Una aperta.
Ya lo tengo solucionado. Me faltaba el código para vincular en VB desde modulo.
Un archivo texto con la ruta de la MDB con los datos y se vincula dinámicamente.
Gracias de todos modos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas