Cómo vincular tablas con VBA en Access 2010

Necesito que siempre que arranque la base de datos "ejecutable" realice una revinculación de todas las tablas que se encuentran en el archivo llamado "Gestión orientación_datos.accdb" que se debe encontrar en su misma carpeta.

¿Por qué necesito esto? Porque cuando ambos archivos, el ejecutable y el archivo de datos los llevo a otro ordenador, y en una ruta diferente, no encuentra el archivo de datos "Gestión orientación_datos.accdb".

1 respuesta

Respuesta
1

Pedro: Creo que éste ejemplo que tengo en Mediafire, te servirá casi sin adaptar nada o adaptando muy poco.

http://www.mediafire.com/download/yiyx8ht8b86pdba/VinculaTablas.rar 

Mis saludos >> Jacinto

Gracias Jacinto. Creo que hace tiempo me pasaste ese archivo y me ha funcionado. Pero no sé que ocurre ahora, desde que instalé Access 2010 que no me funciona. El código que no me acaba de funcionar es el siguiente:

Public Sub ReVinculaTablas()
Dim strBDRemota As String, _
bytVersion As Byte, _
Tabla As DAO.TableDef

On Error GoTo ReVinculaTablas_TratamientoErrores

bytVersion = Val(SysCmd(acSysCmdAccessVer))

' construyo la ruta de la base de datos Neptuno en función de la versión de access

strBDRemota = CurrentProject.Path & "\Gestión orientación_datos.accdb"


If Len(Dir$(strBDRemota)) = 0 Then
If MsgBox("La ruta de la base de datos Gestión orientación_datos.accdb no era la esperada" & vbCrLf & Chr$(34) & strBDRemota & vbCrLf & "¿Quiere buscarla usted?", vbCritical + vbYesNo) = vbYes Then
strBDRemota = AbrirArchivoFD("C:\", "Microsoft Office Access (*.accdb, *.adp)", "Selecciona la base de datos")
If Len(Dir$(strBDRemota)) = 0 Then GoTo ReVinculaTablas_Salir
Else
GoTo ReVinculaTablas_Salir
End If
End If

For Each Tabla In CurrentDb.TableDefs
' si Tabla.connect no está vacio, es por que se trata de una tabla vinculada
If (Tabla.Connect <> vbNullString) Then
' así pues asigno la "nueva" ruta a la tabla vinculada
Tabla.Connect = ";DATABASE=" & strBDRemota & ";PWD=Agustin,.430"
Tabla.RefreshLink
End If
Next Tabla


ReVinculaTablas_Salir:
Set Tabla = Nothing
On Error GoTo 0
Exit Sub

ReVinculaTablas_TratamientoErrores:
Select Case Err
Case 3024
MsgBox "La base de datos Gestión orientación_datos.accdb no se encuentra en " & vbCrLf & strBDRemota, vbCritical + vbOKOnly, "ATENCION"
Case 3011, 3078 ' la tabla no existe en Neptuno
Resume Next
Case Else
MsgBox "Error " & Err.Number & " en proc. ReVinculaTablas de Módulo VinculacionTablas (" & Err.Description & ")", vbOKOnly + vbCritical
End Select
GoTo ReVinculaTablas_Salir

End Sub

Debería encontrar la base de datos con las tablas en la misma carpeta que el archivo principal, pero no es así. Si me pide que la busque le digo cuál (busca neptuno por defecto), pero sigue sin funcionar. Me da el error 3044. Es como si el archivo principal tuviese en memoria la ruta primera y no fuese capaz de cambiarla por la nueva ruta.

Pedro: Ahora ya es un poco tarde para mi. Mañana le echo na ojeada y te comento.

Mis saludos >> Jacinto

Gracias Jacinto. No te preocupes. ¿Es posible que no sea capaz de hacer el vínculo porque el nombre del archivo que contiene las tablas tiene tildes "Gestión orientación_datos"?. Es decir, que cambiando por "Gestion orientacion_datos" no surja el problema.

Pedro: Ya que vas a cambiar te sugiero unas el Nombre >>

"GestionOrientacionDatos"

Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas