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 49 50 51 52 53 54 55 56 57 58 59 60
|
Function LinkMdb(CheminAcces As String) As Boolean
Dim MyBD1 As Database
On Error GoTo Err_LinkMdb
Dim TableTemp As TableDef
Dim strCompare As String, strAttache As String
Dim strMsg As String, boucle As Integer
Const cERR_USERCANCEL = vbObjectError + 1000
Const cERR_NOREMOTETABLE = vbObjectError + 2000
strCompare = ";DATABASE=" & CheminAcces$
DoCmd.SetWarnings (False)
Set MyBD1 = CurrentDb()
For boucle = 0 To MyBD1.TableDefs.Count - 1
Set TableTemp = MyBD1.TableDefs(boucle)
' Pour mes tables en local ne pas faire de liaison
If TableTemp.Name = "_Admin" Or TableTemp.Name = "TblX Etats" Then GoTo Suite1
If InStr(1, TableTemp.Name, "MSys") = 0 Then
NomBase = Mid(TableTemp.Connect, InStrRev(TableTemp.Connect, "\") + 1, 255)
strAttache = strCompare & NomBase
If TableTemp.Connect <> (strCompare & NomBase) Then
SysCmd acSysCmdSetStatus, "Mise à jour du lien pour : '" & TableTemp.Name & "'...."
TableTemp.Connect = strAttache
TableTemp.RefreshLink
End If
End If
Suite1:
Next boucle
LinkMdb = True
SysCmd acSysCmdClearStatus
Exit_LinkMdb:
DoCmd.SetWarnings (True)
MyBD1.Close
Set MyBD1 = Nothing
Set TableTemp = Nothing
LinkMdb = False
Exit Function
Err_LinkMdb:
Select Case Err
Case 3059:
Case cERR_USERCANCEL:
MsgBox "Aucune base de données n'est spécifiée, ne peut reconnecter les tables.", _
vbCritical + vbOKOnly, "Erreur en rafraîchissant les liens."
Resume Exit_LinkMdb:
Case cERR_NOREMOTETABLE:
MsgBox "La table '" & TableTemp.Name & "' n'est pas trouvée dans la base de donées " & _
vbCrLf & MyBD1.Name & ". On ne peut rafraîchir le lien", vbCritical + vbOKOnly, _
"Erreur en rafraîchissant les liens."
Resume Exit_LinkMdb:
Case Else:
strMsg = "Error Information..." & vbCrLf & vbCrLf
strMsg = strMsg & "Function: fRefreshLinks" & vbCrLf
strMsg = strMsg & "Description: " & Err.Description & vbCrLf
strMsg = strMsg & "Error #: " & Format$(Err.Number) & vbCrLf
MsgBox strMsg, vbOKOnly + vbCritical, "Error"
Resume Exit_LinkMdb:
End Select
End Function |
Partager