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

Sécurité Discussion :

Limiter l’accès à des enregistrements d'une table en fonction d'un champ de la table [AC-2003]


Sujet :

Sécurité

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Septembre 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Septembre 2016
    Messages : 28
    Points : 24
    Points
    24
    Par défaut Limiter l’accès à des enregistrements d'une table en fonction d'un champ de la table
    Bonjour,

    je cherche à limiter l’accès à des enregistrements d'une table en fonction d'un champ de la table.

    En gros je veux que l'Italie ne puisse accéder qu'aux enregistrements Italiens (Branch= Italie) depuis Excel en connexion SQL. Pareil pour les autres pays.

    Une idée ? J'ai fouillé mais je ne trouve qu'un moyen de limiter l’accès à des objets "complets".

    Il n'y a pas mieux que de créer des sous tables par pays et donner l'acces à ces sous tables par pays avec les groupes de securité ?

    Merci beaucoup par d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La reponse courte est "oui", Access ne permet pas le controle au niveau des enregistrements.
    C'est du tout ou rien.

    Par contre tu peux faire un formulaire qui va filtrer les donnees et n'afficher que celle que tu veux,
    Soit tu appliques le filtre au formulaire lui-meme, soit tu l'appliques a la requete source du formulaire.
    Si tu as un champ "pays" dans tes donnees et un champ "Pays" associe a l'utilisateur, il te suffit de demander a Access toutes les donnees ou les deux champs sont egaux.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Septembre 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Septembre 2016
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    Ok merci,

    J’étais en train de créer des requêtes par pays (hardcodé) et de lier les fichiers excel à ces requêtes.

    mais votre histoire de formulaire a l'air pas mal.

    Merci bcp.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    J’étais en train de créer des requêtes par pays (hardcodé) et de lier les fichiers excel à ces requêtes.
    Hard coder une valeur dans une requete (ou dans du code) est generalement une mauvaise idee.
    Il n'y a rien de plus changeant qu'une constante :-).
    A part pour des constantes systemes (ex la serie des mso), il est preferable de les mettre dans une table de parametrage et de se referer a cette table.
    Note qu'il y a certains cas ou on ne peut pas faire autrement mais cela doit rester une de nos dernieres solutions.
    Et dans ce cas il est prudent de mettre en place des mecanismes de verification qui t'alerte si la constante change.

    Je le fais parfois dans du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select case uneValeur
       case valeur1
       case valeur2
       case else
           call err.raise(5,,error$(5) & " - uneValeur inconnue")
    end select
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Septembre 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Septembre 2016
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    Oui j’évite au maximum le hardcoding mais bon là, les utilisateurs Italiens auront toujours les chiffres "ITALY" et les Belges auront toujours les "BELGIUM", etc...

    Je regarde quand meme l'autre solution

    A+

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pour eviter d'avoir autant de requete que de code, ce qui est penible a ma maintenir.

    Je ferais quelque chose comme :

    tblUtilisateur
    ClefUtilisateur
    CodeUtilisateur
    CodePays

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function LireCodePays(prmCodeUtilisateur as string)
        LirePays=DFirst("CodePays", "tblUtilisateur", "[CodeUtilisateur]=""" & [prmCodeUtilisateur] & """")
    end function
    Et pour lire le code utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function LireCodeUtilisateur() as string
       LireCodeUtilisateur=environ$("USERNAME")
    end function
    ReqDonnees
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select [tblDonnees].* form [tblDonnees]
    where [tblDonnees].[CodePays]=LireCodePays(LireCodeUtilisateur())

    Une seule requete, tous les pays traites.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2011, 14h07
  2. Réponses: 1
    Dernier message: 11/08/2006, 23h02
  3. Taille des enregistrements d'une table
    Par Stbaurl dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 11/07/2006, 09h19
  4. [WD9] Cliquer sur des enregistrements dans une table
    Par oz80 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/12/2005, 20h11
  5. Parcourir l'ensemble des enregistrements d'une table
    Par Aurèl90 dans le forum Access
    Réponses: 17
    Dernier message: 22/09/2005, 14h51

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