Home
Home

---Soumis par Dev Ashish---

Prévenir Access de fermer.

(Q) Je veux m'assurer que les usagers teminent leur session en appuyant sur le bouton Exit de mon formulaire général de navigation (Switchboard), et non en fermant Access-même. Comment?

(A) Vous pouvez utiliser la procédure événementielle UnLoad d'un formulaire pour cette fin. Si votre formulaire de navigation est le premier à s'ouvrir et demeure toujours ouvert, vous pouvez simplement implémenter la méthode suivante. Ici, j'illustre la méthode en utilisant également  un formulaire caché.

Définir une nouvelle variable dans un nouveau module

Public pboolCloseAccess as Boolean
'Note: Access 2.0 ne reconnaît pas le type  Boolean
'utiliser le type interger à la place
'utilisant  -1 comme True et 0 comme False.

Maintenant, lorsque vous ouvrez la base de données, assigner
pboolCloseAccess=False

Dans votre formulaire de référence  (Switchboard), sous sa procédure événementielle Click du bouton de sortie, et (optionellement) dans Unload du formulaire, assigner la variable à vrai: 
pboolCloseAccess=True
DoCmd.Close acForm, "hfrmCloseAccess"
docmd.Quit

Créer un nouveau formulaire (hfrmCloseAccess) dont vous minimiserez les dimensions car il sera caché, de toutes façons. Ne pas oublier, alors, d'inclure dans sa procédure événementielle onUnload:


If not pboolCloseAccess Then 
    Cancel = True
End if

Créer la macro  Autoexec. Si vous en avez déjà une, s'assurer que vous ouvrez  hfrmCloseAccess avant toute autre action, en mode caché.

La raison, ici, est la suivante: quand quelqu'un clique sur le X dans le coin supérieur gauche d'Access, le système commence à fermer les objets dans l'ordre inverse de leur création. Puisque  hfrmCloseAccess est le premier formulaire à avoir été ouvert, il sera le dernier à être fermé. Mais puisque la variable booléenne est encore assignée à False, l'opération sere annulée (Cancel=True) et le formulaire ne fermera pas, et Access ne fermera pas. (Préparez vous à ré-ouvrir les formulaires requis, dans ce cas.) D'un autre coté, si l'usager ferme l'application en utilisant votre bouton,  la variable est alors assignée à True, le formulaire caché se fermera, de même qu'Access.