Public Function RefreshTableLinks() As String
On Error GoTo ErrHandle
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strCon As String
Dim strBackEnd As String
Dim strMsg As String
Dim intErrorCount As Integer
Dim tmp As Variant
Set db = CurrentDb
'Door alle tabellen in de TableDefs Collectie lussen.
For Each tdf In db.TableDefs
If Left$(tdf.Connect, 10) = ";DATABASE=" Then 'Tabel is een gelinkte tabel.
strCon = Nz(tdf.Connect, "") 'Lees de Connection String uit.
'Gebruik de SPLIT opdracht om de back-end database naam te splitsen.
tmp = Split(strCon, "\")
'Checken of we een Access database te pakken hebben
If InStr(1, tmp(UBound(tmp)), "mdb") > 0 Or InStr(1, tmp(UBound(tmp)), "accdb") > 0 Then
'De nieuwe Connection String opbouwen en verversen.
Set tdf = db.TableDefs(tdf.Name)
tdf.Connect = ";DATABASE=" & CurrentProject.Path & "\Backend\" & tmp(UBound(tmp))
tdf.RefreshLink
Else
'Als er een foutje is: de foutmelding toevoegen aan de foutmeldingsboodschap.
intErrorCount = intErrorCount + 1
strMsg = strMsg & "Niet gelukt om de back-end database naam uit te lezen." & vbNewLine
strMsg = strMsg & "Tabel Naam: " & tdf.Name & vbNewLine
strMsg = strMsg & "Connect = " & strCon & vbNewLine
End If
End If
Next tdf
ExitHere:
On Error Resume Next
If intErrorCount > 0 Then
strMsg = "Er waren problemen met het verversen van de tabel links: """ _
& vbNewLine & strMsg & "In Procedure RefreshTableLinks"""
RefreshTableLinks = strMsg
End If
Set tdf = Nothing
Set db = Nothing
Exit Function
ErrHandle:
intErrorCount = intErrorCount + 1
strMsg = strMsg & "Error " & Err.Number & " " & Err.Description
strMsg = strMsg & vbNewLine & "Tabel Naam: " & tdf.Name & vbNewLine
strMsg = strMsg & "Connect = " & strCon & vbNewLine
Resume ExitHere
End Function