ho provato alcune delle risposte di cui sopra , in particolare la risposta di Martin Thompson con cui ho riscontrato alcuni errori, quindi l'ho modificata come segue:
Public Function reLinkTables() As Boolean
On Error GoTo ErrorRoutine
Dim sMyConnectString As String
Dim tdf As TableDef
Dim db_name As String
' The Main Answer is by Martin Thompson
' Modified by Dr. Mohammad Elnesr
'We will link all linked tables to an accdb Access file located in the same folder as this file.
'Replace the DATA file name in the following statement with the name of your DATA file:
sMyConnectString = ";DATABASE=" & CurrentProject.Path & "\"
For Each tdf In CurrentDb.TableDefs
If Len(tdf.Connect) > 0 Then
'It's a linked table, so re-link:
'First, get the database name
db_name = GetFileName(tdf.Connect)
' Then link the table to the current path
tdf.Connect = sMyConnectString & db_name
tdf.RefreshLink
End If
Next tdf
ExitRoutine:
MsgBox "All tables were relinked successfully"
Exit Function
ErrorRoutine:
MsgBox "Error in gbLinkTables: " & Err.Number & ": " & Err.Description
Resume ExitRoutine
End Function
Function GetFileName(FullPath As String) As String
Dim splitList As Variant
splitList = VBA.Split(FullPath, "\")
GetFileName = splitList(UBound(splitList, 1))
End Function
Dopo fininshing questo, Goto Accesso Ribon> Crea> Macro Dal menu a discesa selezionare "EseguiCodice", quindi nel tipo nome della funzione "RelinkTables" che abbiamo digitato qui. Quindi salvare la macro con il nome "AutoExec". Ogni volta che apri il database, tutte le tabelle collegate verranno ricollegate al percorso originale. Questo è molto utile se si inseriscono i database in un supporto portatile.
fonte
2017-01-22 14:28:34
Quanto è ridicolo che Access non supporti percorsi relativi fuori dalla scatola. In che modo qualcuno dovrebbe spedire a un cliente un database diviso con percorsi assoluti? –
La limitazione è probabilmente dovuta all'accesso multiutente: poiché più utenti possono utilizzare lo stesso file e il blocco dei file è necessario, è necessario un percorso completo. La soluzione semplice è all'avvio il front end controlla se il back-end è disponibile (e che il controllo può essere relativo). Se il link è sbagliato, il tuo codice si ricollegherà semplicemente all'avvio. In effetti, ciò significa che l'applicazione verrà eseguita correttamente se viene spostata. –