Gestion d'ouverture d'une base donnée

Contenu du snippet

Cette méthode permet d'éviter le lancement de la même base plusieurs fois en locale. Pour lancer le test vous pouvez soit créer une macro autoexec, soit créer un formulaire de démarrage soit <F_Démarrage> et qui vérifie si la base est déjà ouverte :

Source / Exemple :


Private Sub Form_Open(Cancel As Integer)
If TestDDELink(Application.CurrentDb.Name) Then
   MsgBox "Cette base est déja ouverte sur votre poste", VbInformation
   DoCmd.Quit
End If
End Sub

Function TestDDELink(ByVal strNomApplication As String) As Integer
Dim varCanalDDE As Long
On Error Resume Next
Application.SetOption "Ignore DDE Requests", True
' -- Ouvrir un canal entre instance de la base
varCanalDDE = DDEInitiate("MSAccess", strNomApplication)
' -- Si la base n'est pas ouverte, pas de canal de communication entre deux instances
If Err Then
  TestDDELink = 0
Else
  TestDDELink = 1
  DDETerminate varCanalDDE 
  DDETerminateAll                    
End If
Application.SetOption ("Ignore DDE Requests"), False
End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.