Public Type ExistingTableLinks
TableName As String
Connect As String
End Type
'-----------------------------------------------------------
' Procedure : ReLinkTables
' Purpose : Reset the linked table paths
' Arguments : db - The DAO Database for which paths are to be reset.
'-----------------------------------------------------------
'
Public Sub ReLinkTables(db As DAO.Database)
Dim Tbl As DAO.TableDef
Dim n As Integer
Dim LinkedTables() As ExistingTableLinks
On Error Resume Next
' Build a list of the linked tables in the database
For Each Tbl In db.TableDefs
If (Tbl.Attributes And dbAttachedTable) Then
Err.Clear
ReDim Preserve LinkedTables(UBound(LinkedTables) + 1)
If Err.Number <> 0 Then ReDim Preserve LinkedTables(0)
LinkedTables(UBound(LinkedTables)).TableName = Tbl.Name
LinkedTables(UBound(LinkedTables)).Connect = Tbl.Connect
End If
Next Tbl
' Drop and relink each of the linked tables
If UBound(LinkedTables) >= 0 Then
For n = 0 To UBound(LinkedTables)
db.TableDefs.Delete LinkedTables(n).TableName
Set Tbl = New DAO.TableDef
Tbl.Name = LinkedTables(n).TableName
If InStr(1, UCase$(LinkedTables(n).Connect), _
UCase$("ChapsCore")) > 0 Then
Tbl.Connect = ";DATABASE=" & Core_Path & "ChapsCore.Mdb"
ElseIf InStr(1, UCase$(LinkedTables(n).Connect), _
UCase$("ChapsMast")) > 0 Then
Tbl.Connect = ";DATABASE=" & Data_Path & "ChapsMast.Mdb"
ElseIf InStr(1, UCase$(LinkedTables(n).Connect), _
UCase$("Trans")) > 0 Then
Tbl.Connect = ";DATABASE=" & Data_Path & "Trans.Mdb"
ElseIf InStr(1, UCase$(LinkedTables(n).Connect), _
UCase$("ChapsCtrl")) > 0 Then
Tbl.Connect = ";DATABASE=" & Data_Path & "ChapsCtrl.Mdb"
End If
Tbl.SourceTableName = LinkedTables(n).TableName
db.TableDefs.Append Tbl
Set Tbl = Nothing
Next n
End If
On Error GoTo 0
Set Tbl = Nothing
End Sub