Access - Vincular tablas de forma relativa

 
Vista:

Vincular tablas de forma relativa

Publicado por Socrate (1 intervención) el 01/02/2006 14:16:08
Necesito que las tablas que vinculo a mi BD lo hagan de forma relativa, es decir que al pinchar sobre una de estas tablas no haga referencia a "C:/base/hhh/loquesea.mbd" si no que lo hago como "../loquesea.mbd"
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cómo usar rutas relativas para tablas vinculadas

Publicado por Alejandro (4142 intervenciones) el 20/06/2023 17:19:12
En Access, las rutas de las tablas vinculadas se almacenan como rutas absolutas por defecto, lo que significa que contienen la ubicación completa del archivo de base de datos vinculado. Sin embargo, puedes utilizar una solución alternativa para lograr que las rutas de las tablas vinculadas sean relativas.

Aquí hay una posible solución:

1. Crea una tabla en tu base de datos de Access para almacenar la información de las rutas relativas. Puedes llamarla "Tbl_Rutas" y agregar dos campos: "ID_Tabla" y "Ruta_Relativa".

2. En la tabla "Tbl_Rutas", ingresa los nombres de las tablas vinculadas en el campo "ID_Tabla" y sus rutas relativas correspondientes en el campo "Ruta_Relativa". Por ejemplo:
- ID_Tabla: Tabla1, Ruta_Relativa: ../loquesea1.mdb
- ID_Tabla: Tabla2, Ruta_Relativa: ../loquesea2.mdb

3. En el evento "Abrir" del formulario o en el evento "Cargar" del informe donde tienes los enlaces a las tablas vinculadas, agrega código VBA para modificar dinámicamente las rutas de las tablas.

Por ejemplo, puedes usar el siguiente código VBA en el evento "Abrir" de un formulario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Form_Open(Cancel As Integer)
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim strTabla As String
    Dim strRutaRelativa As String
 
    Set db = CurrentDb
    strSQL = "SELECT ID_Tabla, Ruta_Relativa FROM Tbl_Rutas"
    Set rs = db.OpenRecordset(strSQL)
 
    ' Recorrer el recordset y actualizar las rutas de las tablas vinculadas
    Do While Not rs.EOF
        strTabla = rs!ID_Tabla
        strRutaRelativa = rs!Ruta_Relativa
 
        ' Actualizar la ruta de la tabla vinculada
        db.TableDefs(strTabla).Connect = ";DATABASE=" & strRutaRelativa
        db.TableDefs(strTabla).RefreshLink
 
        rs.MoveNext
    Loop
 
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub

Asegúrate de ajustar el nombre de la tabla, los nombres de campo y los nombres de archivo según tu estructura de base de datos.

Con este enfoque, las rutas de las tablas vinculadas se actualizarán dinámicamente al abrir el formulario o informe, utilizando las rutas relativas almacenadas en la tabla "Tbl_Rutas". De esta manera, podrás utilizar rutas relativas como "../loquesea.mdb" en lugar de rutas absolutas.

Es importante destacar que al utilizar rutas relativas, es fundamental tener en cuenta la estructura de carpetas y la ubicación de los archivos vinculados en relación con la base de datos principal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar