IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Portée d'une variable déclarée en public


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Par défaut Portée d'une variable déclarée en public
    Bonjour,

    Je dois créer une base Access sur laquelle une dizaine d'utilisateurs vont se connecter. Ces utilisateurs sont de 3 types : ceux qui peuvent visualiser uniquement certains formulaires, ceux qui peuvent visualiser et modifier certains formulaires, et ceux qui peuvent visualiser et modifier tous les formulaires.

    J'ai commencé, un peu naïvement, par créer une variable de type integer dans un module indépendant des formulaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public vDroit As Integer
    Cette variable est alimentée par le formulaire de connexion, et à chaque fois que j'affiche un formulaire, je vérifie l'état de cette variable pour afficher ou non le formulaire, et dans quel mode.

    Et ensuite, je me suis dit que j'étais une grosse patate, car en toute logique, dès qu'un deuxième utilisateur va se connecter, il va immanquablement écraser la variable vDroit, et tous les utilisateurs connectés vont bénéficier des droits du dernier utilisateur connecté.

    Et bien pas du tout... Je viens de faire des tests, et il semblerait bien que la variable vDroit soit propre à chaque "instance" de la base de données.

    Alors je devrais être content, mais comme je suis d'un naturel méfiant , j'ai peur que ça me pète à la gueule lorsque je mettrai la base de données en prod.

    D'où ma question : est-ce normal qu'une telle variable reste liée à une instance ? Est-ce qu'il y a un paramètre dans Access qui permette de s'assurer que cela fonctionnera bien partout ?

    Merci d'avance !

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 250
    Billets dans le blog
    48
    Par défaut
    bonsoir,

    est-ce que tu as scindé ta base en frontale/dorsale (principe du fonctionnement Client/serveur sous Access) ?
    On dirait bien que non

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Par défaut
    Non en effet. Et je ne souhaite pas le faire pour l'instant, en raison de l'architecture du site, qui ne s'y prête pas.

    J'aimerais juste une confirmation sur le fait que ce soit normal ou pas qu'une variable publique reste "confinée" à l'instance de base de données.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 320
    Par défaut je pense que c'est normal
    Je pense que c'est normal.

    Une variable travaille au niveau Application, c'est une case mémoire, si tu lance une seconde instance d'Access ( que se soit sur le même ordi ou non ) son adresse est évidement différence donc son contenu également. Pour avoir une portée "base", il faut stocker l'information dans la base.

    Si c'est pour gérer la sécurité, tu peux le faire en créant un fichier .mdw ( obligation utilisation format .mdb si tu es en Access 2007 ou 2010 ) De là tu peux autoriser/interdire à chaque utilisateurs la lecture, la modification d'un objet.

    Sinon tu peux gérer les droits dans une table. A l'ouverture de l'application, tu récupère les droits dans une table qui les contient, et tu stocke les infos dans une ou plusieurs variable.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Par défaut
    Ok, merci pour ta réponse.

Discussions similaires

  1. Portée pour une variable déclarée extern
    Par zebulon36 dans le forum Langage
    Réponses: 6
    Dernier message: 17/06/2014, 22h07
  2. Problème avec la porté d'une variable public
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2013, 13h07
  3. Réponses: 9
    Dernier message: 19/03/2010, 08h15
  4. [XSLT] pb portée d'une variable
    Par NPortmann dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 23/05/2006, 15h53
  5. Portée d'une variable globale
    Par Giill dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/12/2005, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo