Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
J'ai un petit soucis concernant la restriction d'affichage d'un objet sous Qlikview : je gère l'affichage de cet objet grâce à l'affichage conditionnel dans les paramètres de l'objet.
Potentiellement, cette liste d'utilisateurs peut varier et je préfèrerai que la liste des utilisateurs ayant l'accès se mette à jour de manière dynamique. Une table SQL est importée dans mon application Qlikview et liste l'ensemble des utilisateurs pouvant voir l'objet.
Pour cela, j'utilise la fonction CONCAT suivante :
='OSUser() = ''' & concat(ID_LOGIN,''' or OSUser() = ''') & '''
Ce qui me donne un résultat affiché qui me va bien :
OSUser() = 'Domaine\Util1' or OSUser() = 'Domaine\Util2'
Cependant, lorsque je mets ce code dans la partie "affichage conditionnel de l'objet", rien ne passe. C'est comme si le code n'était pas reconnu.
Ma fonction est bonne puisque si je copie le résultat à la place de la formule dans l'affichage conditionnel, cela fonctionne bien.
Est-ce impossible de générer une liste de OSUser() dynamique pour faire de l'affichage conditionnel ?
Merci par avance pour votre aide et vos éventuelles solutions...
Bonne journée
Bonjour,
Si j'ai bien compris, ce que vous voulez, c'est que quand l'utilisateur est ajouté dans la table SQL, cela lui donne accès à l'objet concerné.
Si c'est bien ça, j'ai eu la même problématique et je l'ai géré de la manière suivante. J'ai créé une table avec la liste des utilisateurs et un profile pour chacun. En l'occurrence, vous n'auriez qu'un profil, disons le profil A.
Vous auriez donc dans votre table :
Utilisateur, Profil
Domain\Util1, A
Domain\Util2, A
Ensuite, dans la condition d'affichage vous mettez l'expression suivante :
Only({<Utilisateur={'$(=OSUser())'}>} Profil)='A'
J'espère que cela fonctionnera pour vous.
De mon côté, je n'avais qu'un seul domaine, j'ai donc chargé uniquement le login de l'utilisateur dans la table et j'ai utilisé l'expression suivante :
=ONly({<Utilisateur={'$(=SUBFIELD(osuser(),'=',3))'}>} PROFIL)='A'
Cdlt,
bonjour,
esseyez la fonction suivante dans la barre condition d'affichage:
if(match(OSUser,concat(ID_LOGIN,',')),1,0)
cordialement,
Hello,
Merci beaucoup pour la solution proposée. Cependant, cela ne semble pas résoudre le problème.
Le concat(ID_LOGIN) contient bien mon OSUser(), malgré tout la fonction match sort zéro en résultat.
J'ai adapté le concat afin d'afficher les apostrophes : mais pareil....
match(OSUser(),'''' & Concat(ID_LOGIN_QV,''',''') &'''')
J'ai également essayé avec les fonction wildmatch et mixmatch, sans succès.
Bonjour,
Si j'ai bien compris, ce que vous voulez, c'est que quand l'utilisateur est ajouté dans la table SQL, cela lui donne accès à l'objet concerné.
Si c'est bien ça, j'ai eu la même problématique et je l'ai géré de la manière suivante. J'ai créé une table avec la liste des utilisateurs et un profile pour chacun. En l'occurrence, vous n'auriez qu'un profil, disons le profil A.
Vous auriez donc dans votre table :
Utilisateur, Profil
Domain\Util1, A
Domain\Util2, A
Ensuite, dans la condition d'affichage vous mettez l'expression suivante :
Only({<Utilisateur={'$(=OSUser())'}>} Profil)='A'
J'espère que cela fonctionnera pour vous.
De mon côté, je n'avais qu'un seul domaine, j'ai donc chargé uniquement le login de l'utilisateur dans la table et j'ai utilisé l'expression suivante :
=ONly({<Utilisateur={'$(=SUBFIELD(osuser(),'=',3))'}>} PROFIL)='A'
Cdlt,
Bonjour,
C'est tout à fait ça !
Je viens de tester = c'est ok sur l'application Qlikview qui me permet de développer l'outil. Un grand merci pour l'astuce !
Par contre, c'est KO lorsque je déploie l'application sur mon serveur Qlik pour consultation : je vais me renseigner en interne pour savoir comment fait.
Bonne journée,