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

QlikView Discussion :

Section Access à partir des données en base?


Sujet :

QlikView

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 30
    Points : 20
    Points
    20
    Par défaut Section Access à partir des données en base?
    Bonjour,
    j'ai une petite question droits d'accès et base de données s'il-vous-plaît.
    Dans le cadre de mon board QV je bosse sur les données d'une base de données ayant une table appelée profil qui contient comme données:
    - un id
    - un matricule
    - un nom
    - un prénom

    Et pour le board, les droits d'accès vont en fait être en fonction du contenu de la colonne 'matricule': s'il y a un matricule enregistré l'utilisateur a le droit de voir tout ce qu'il veut dans le rapport.
    En revanche, s'il n'a pas de matricule enregistré, il ne peut voir que certaines données, filtrées par rapport à une autre table (disons les données 'soin' de la colonne 'nature_event' de la table 'event').

    J'ai cherché partout sur internet et tout ce que j'ai vu c'est avec une section:
    LOAD [nom_colonnes] INLINE
    et un fichier externe type excel où l'on rentre manuellement les administrateurs, les utilisateurs... et ensuite dans QV on fait la restriction de sécurité par rapport au USERID et au PASSWORD.

    Mais moi il faut que j'aille vérifier directement en base de données si la colonne 'matricule' de la table 'profil' est vide ou contient un matricule pour donner l'accès ou non. En gros, quand mon utilisateur va essayer de se connecter, il faudrait que je lui demande son 'prénom' et son 'nom' et que je parte vérifier en base s'il a un matricule correspondant ou non. Si non, il ne peut voir que les données 'soin', si oui, il a accès à tout.

    Ma question:
    est-ce qu'au lieu de LOAD [nom_colonnes] INLINE on peut faire un LOAD [nom_colonnes] SQL SELECT ?
    Et si oui, je veux bien un exemple parce-que là je suis un peu perdue.

    En vous remerciant par avance,
    Jennifer

    P.S, j'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Section Access;
     
    Load Upper(nom) as NOM,
    	Upper(prenom) as PRENOM,
    	Upper(matricule) as ACCESS,
    	Upper(nature_event) as NATURE;
     
    SQL Select 
    	nom as NOM,
    	prenom as PRENOM,
    	matricule as MATRICULE
    FROM `bdd`.`profil`;
     
    SQL Select
    	nature_event as NATURE
    FROM `bdd`.`event`;
     
    Section Application
    mais ça ne marche pas...

  2. #2
    Modérateur

    Inscrit en
    octobre 2006
    Messages
    1 605
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 1 605
    Points : 2 460
    Points
    2 460
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    On peut tout à fait charger depuis un base de données.
    Mais il faut respecter les champs attendus.

    Par exemple, dans le champ "ACCESS" est attendu soit la valeur "ADMIN" soit la valeur "USER". Peu de chances que ce soit ce qu'il y a dans votre colonne "matricule".

    Le principe de la section d'accès, c'est de charger une table d'utilisateurs qui ont un champ qui fera le lien avec les champs de l'application.

    quand mon utilisateur va essayer de se connecter, il faudrait que je lui demande son 'prénom' et son 'nom' et que je parte vérifier en base s'il a un matricule correspondant ou non
    2 solutions :
    - Soit à l'ouverture de l'application, elle demandera un identifiant (par exemple le matricule, ce qui serait le plus simple dans votre cas)
    - Soit vous liez les comptes Windows à vos utilisateurs, comme ça ils n'ont pas besoin de saisir quoi que ce soit en plus.

    Je vous conseille de vous entrainer avec les sections d'accès avec des chargements "LOAD INLINE" comme dans la documentation, et une fois que vous avez réussi à faire ce que vous voulez, vous branchez sur votre base de données.
    N'oubliez pas non plus de mettre un utilisateur ADMIN et de conserver une copie de votre application non verrouillée, une erreur est si vite arrivée

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bonjour PhunkyBob.

    Tout d'abord merci pour la réponse!
    Je m'excuse de répondre aussi tard mais je voulais bien étudier votre réponse et expérimenter dessus avant de faire un retour.

    Après moults péripéties j'ai réussi à plus ou moins faire marcher l'accès via la base de données grâce à vos conseils:
    - j'ai rajouté une colonne dans ma table que j'ai appelée 'access_level' et où j'ai donc mis 'ADMIN' ou 'USER'. J'ai vu sur internet que ça pouvait poser problème si on a les mots réservés (USERID, ACCESS, etc directement en base de données, c'est pourquoi j'ai mis un nom différent).
    - j'ai fait de mon matricule le USERID
    - j'ai rajouté ma colonne 'nature' dans ma table pour faire le lien avec les autres tables
    - par contre j'ai dû rajouter une colonne 'user_pwd', sinon impossible d'accéder au board quand mon identifiant est vide (quand il n'y a pas de matricule enregistré donc, et que mon utilisateur a des droits très limités). Du coup j'ai une autre question: Peut-on supprimer le password pour n'avoir accès que via l'identifiant?

    Mon seul soucis est pour mon compte admin. En base de données j'ai mis dans la colonne 'nature' la valeur * pour dire qu'il a accès à tout. Mais ça ne marche pas, je ne vois qu'une partie des données. Est-ce que ce n'est pas le bon code? On ne peut pas mettre * en base de données? Doit-on obligatoirement mettre toutes les valeurs possibles (expl: soin, malaise, ...) ? Parce-que si je me retrouve avec 50 valeurs, ça va être compliqué.


    Ci-joint une photo de ma table profil, si vous voyez quelque chose qui cloche...
    Nom : table_profil.PNG
Affichages : 26
Taille : 11,8 Ko

    Et mon script de chargement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Section Access;
    Load
    	Upper(ACCESS) as ACCESS,
    	Upper(USERID) as USERID,
    	Upper(PASSWORD) as PASSWORD,
    	Upper(NATURE) as NATURE;
     
    SQL Select
    	access_level as ACCESS,
    	matricule as USERID,
    	user_pwd as PASSWORD,
    	nature as NATURE
    FROM `bdd`.`profil`;
    Section Application;
     
    SQL Select
    	access_level,
    	matricule,
    	user_pwd,
    	nature
    FROM `bdd`.`profil`;

    Voilà, ce sont mes dernières questions, normalement.

    Encore merci pour votre aide, vous m'avez bien sauvé la vie, étant complètement nouvelle sur QlikView et seule pratiquante dans mon équipe.

  4. #4
    Modérateur

    Inscrit en
    octobre 2006
    Messages
    1 605
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 1 605
    Points : 2 460
    Points
    2 460
    Billets dans le blog
    5
    Par défaut
    Peut-on supprimer le password pour n'avoir accès que via l'identifiant?
    Je ne sais plus
    Je n'ai pas accès à QlikView, je ne peux pas vous répondre.

    On ne peut pas mettre * en base de données
    Le * pose souvent problème.
    En plus il est préférable d'avoir des valeurs en majuscules dans la section d'accès (je ne sais pas si c'est toujours le cas, mais ça l'était dans les versions précédentes).

    Ma technique est la suivante : pour toutes les personnes qui doivent avoir accès à tout, je leur mets comme valeur "ALL" (la chaine de texte "ALL").

    Supposons que dans votre application vous ayez un champ "nature" et dans votre table d'utilisateurs vous ayez un champ "USER_NATURE".
    Dans le "section application", on peut créé une table qui fait le lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    link_nature:
    LOAD 
    nature,
    upper(nature) AS USER_NATURE
    RESIDENT ma_table;
     
    CONCATENATE(link_nature)
    LOAD 
    nature, 
    'ALL' AS USER_NATURE
    RESIDENT ma_table;
    Si vous avez 2 valeurs "soin" et "malaise" dans votre table, la table "link_nature" aura comme valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nature, USER_NATURE
    soin, SOIN
    malaise, MALAISE
    soin, ALL
    malaise, ALL
    Ainsi quand un utilisateur aura les droits sur "SOIN" en base, cela sera directement lié aux lignes "soin" du champ "nature".
    Quand un utilisateur aura les droits sur "ALL" en base, cela sera directement lié aux lignes "soin" et "malaise" du champ "nature".

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bonsoir,
    merci encore pour l'aide.
    J'ai fait ça et tout marche pour le mieux!
    C'est parfait.
    Je passe donc le sujet en Résolu.
    Bonne soirée,
    Jennifer

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bonjour PhunkyBob,
    je reviens sur ce sujet pour une petite question.
    J'ai tenté de rajouter des données de test (des ADMIN et des USER) dans ma table de profil, pour notamment tester diverses configurations d'identifiant/motdepasse, et depuis, quand j'ouvre mon board QlikView ça ne me demande plus mes identifiants - mot de passe.
    Dès que je supprime mes données rajoutées, ça remarche.
    Je ne suis pas sûre de comprendre cette sorcellerie?!?

    Je vous joins une capture d'écran de ma table de profil, au cas où...

    Nom : table_profil_v2.PNG
Affichages : 14
Taille : 20,3 Ko

  7. #7
    Modérateur

    Inscrit en
    octobre 2006
    Messages
    1 605
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 1 605
    Points : 2 460
    Points
    2 460
    Billets dans le blog
    5
    Par défaut
    Les valeurs "USER" et "ADMIN" doivent être dans un champ nommé "ACCESS" (en majuscules) de la section d'accès.

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Ah oui, c'est bon j'ai fait ma conversion de mon champ de 'user_access as ACCESS'.
    Et pour l'anecdote: en fait ça ne marche plus dès que le champ PASSWORD est vide. Ca ne me propose plus de me connecter, c'est comme si ça faisait sauter la sécurité du board, ça se connecte automatiquement.
    Voilà, si ça peut aider quelqu'un d'autre qui passe dans les parages: ne laissez pas le champ PASSWORD vide!!

    Encore merci PhunkyBob,
    cette fois-ci tout marche comme ça devrait, je vous laisse donc définitivement sur ce sujet.
    Bonne journée!
    Jennifer

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

Discussions similaires

  1. [Débutant] Remplir une base de données ACCESS à partir des textBox
    Par strafor dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/11/2013, 01h54
  2. [XML] Création d'un flux RSS à partir des données en base
    Par Misoss dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 01/07/2008, 17h03
  3. Liste combobox à partir des donnée d'une base
    Par blue_bird dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/03/2008, 16h30
  4. [ODBC] Liste déroulante à partir des données d'Access
    Par Aillyzeux dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/04/2007, 13h38
  5. comment concevoir un etat à partir des données d'une base de données
    Par lylyagloire dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 26/03/2007, 19h23

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