Empécher la ré-ouverture d'une base


Le code qui suit permet d'éviter lorsqu'une base est déjà ouverte qu'elle ne le soit de nouveau.

Ce code est à lancer à chaque ouverture de la base de donnée.

Public Const ErrAlreadyExist = 183&

Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" _
(ByVal lpAttributs As Long, ByVal InitialOwnwe As Long, _
ByVal lpName As String) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Function CreateBaseMutex()

'** Permet de fermer la base, si elle est déjà ouverte
'** Ce code est à exécuter à l'ouverture de la base

Dim strMutex As String
Dim lngMu As Long
Dim lngErr As Long

strMutex = Dir(CurrentDb.Name)
Err.Clear
lngMu = CreateMutex(0, 1, strMutex)
lngErr = Err.LastDllError

If ErrAlreadyExist = lngErr Then
    CloseHandle lngMu
    DoCmd.Quit
End If

End Function

 

Retour haut de page

Auteur : Jessy SEMPERE