Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

General: Empêcher Access de fermer

Author(s)
Dev Ashish

(Q) Je veux m'assurer que les usagers terminent 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 y implémenter la procédure suivante. Autrement, vous pouvez toujours utiliser un formulaire qui sera toujours 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 (optionnellement) dans Unload du formulaire, assigner la variable à vrai: 
pboolCloseAccess=True
DoCmd.Close acForm, "hfrmCloseAccess"
docmd.Quit

Si votre formulaire de navigation (Switchboard) se ferme en cours d'opération, 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 sera 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.

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer