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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Function fGetLinkPath(strTable As String) As String
Dim dbs As Database, stPath As String
Set dbs = CurrentDb()
On Error Resume Next
stPath = dbs.TableDefs(strTable).Connect
If stPath = "" Then
fGetLinkPath = vbNullString
'can change this to currentdb.name
Else
fGetLinkPath = Right(stPath, Len(stPath) _
- (InStr(1, stPath, "DATABASE=") + 8))
End If
Set dbs = Nothing
End Function
Function ModifAttache(strDBPath)
' Modification simple des attaches
' sur le modèle de fGetLinkPath de Dev Ashish
' 21/07/2005
Dim vieuxnom As String, stPath As String
Dim loTd As TableDef
Dim dbs As Database
Dim I As Integer, nb As Integer
I = 0
CurrentDb.TableDefs.Refresh
' nb de table
nb = CurrentDb.TableDefs.Count
For Each loTd In CurrentDb.TableDefs
On Error Resume Next
stPath = dbs.TableDefs(loTd.Name).Connect
If stPath = Null Then
Else
I = I + 1
vieuxnom = fGetLinkPath(loTd.Name)
loTd.Connect = ";Database=" & strDBPath
loTd.RefreshLink
Debug.Print loTd.Name; " "; fGetLinkPath(loTd.Name); " à la place de : "; vieuxnom
End If
Next loTd
Set loTd = Nothing
CurrentDb.TableDefs.Refresh
MsgBox "Terminé." & vbCrLf & I & " tables attachées pointent désormais vers la base de données " & strDBPath, vbOKOnly, "Procédure terminée avec succés"
End Function |
Partager