Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Designer
Designer Forum d'entraide Designer (création d'univers, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2006, 14h52   #1
Invité régulier
 
Inscription : mai 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 20
Points : 6
Points : 6
Par défaut [6.5] Variable locale à un Univers

Bonjour,

J'utilise actuellement BO et Webi 6.5.
J'ai un problème de conception lors de ma création d'univers.

A partir du login utilisateur, je souhaiterai pouvoir faire une requête qui me retourne une valeur pour ensuite la mettre dans une variable.
Afin de mettre une condition sur toutes les tables de l'univers en utilisant cette variable.

J'ai déjà effectué plusieurs solution mais qui ne me satisfont pas du point de vue des perfs.

Solution 1 :
Créer un objet
Code :
SELECT ... WHERE a = @VARIABLE('BOUSER')
Et utiliser cette objet en condition sur chaque table (par le superviseur ou table dérivée)
Cela répond à la demande mais la requête étant extrêmement volumineuse, elle est trop souvent recalculée lors de rafraîchissement de rapport.

Solution 2 :
Créer directement dans la base (ou designer) des vues/tables dérivées.
Aussi gourmand que la solution du dessus.



Y aurait-il une facon de créer une variable locale à l'univers qui soit renseignée une fois à l'ouverture de la session et re exploitable dans les différents objets de l'univers ?

Je vous remercie par avance.
Adi81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2006, 15h09   #2
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Je vois ce que tu veux dire mais malheureusement non, je ne crois pas.

Tu peux peut-être utiliser des macros, ou alors rajouter une table dans ta BDD qui contient pour chaque utilisateur la valeur de la variable.

C'est pour faire quoi fonctionnellement ?
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2006, 18h10   #3
Invité régulier
 
Inscription : mai 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 20
Points : 6
Points : 6
J'utilise ce filtre dans toutes les tables de mon univers pour pouvoir filtrer les données suivant un code région.

Chaque utilisateur (qui est le login BO) a un code région et ne peut voir que les données de sa région.

Il y a bien une table qui recense les utilisateurs et leur code région, mais les jointures de cette table avec les autres sont encore une fois trop couteuses. .
Adi81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2006, 20h14   #4
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Ah ok.

Euh pourquoi ne pas faire une condition du genre :
Code :
1
2
WHERE
REGION IN(SELECT REGION FROM REGION_DES_UTILISATEURS WHERE USER= login)
En terme de charge ça me parait acceptable non ? Enfin ça dépend de la taille de la table des login/régions.

Et sinon gérer des sécurités dans le superviseur pour chaque utilisateur sur chaque table ? C'est un peu consommateur de temps pour l'administration par contre...
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2008, 12h08   #5
Invité de passage
 
Inscription : août 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 2
Points : 1
Points : 1
Bonjour nuke_y et Adi81,

vos échanges m'intéressent car je me retrouve confrontée à une problématique semblable. Je viens d'ouvrir une nouvelle discussion intitulée : "restriction objet en fonction du login utilisateur".

Pour synthétiser, je créer un nouveau portail Infoview (BO XI) destiné à des magasins (environ 400 pour le moment). J'ai 2 documents BO à leur mettre à disposition. Mais la contrainte est que chaque magasin ne doit avoir accès qu'aux données le concernant.

Pour ce faire, j'ai pensé paramétrer le raffraichissement du document en fonction du login utilisateur qui exécute le raffraichissement.
Solution plus simple que de créer à chaque fois un nouveau groupe (1 par magasin) avec des droits restrictifs => beaucoup trop couteux en maintenance.

Savez vous comment créer un objet (au niveau univers) qui récupère le login connecté (afin d'appliquer cette restriction au niveau de la requete et non du document => trop couteux).

Merci pour votre aide.

***CNE***
***CNE*** est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 11h18   #6
Invité de passage
 
Inscription : mars 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 1
Points : 1
Points : 1
Par défaut UTILISATION RESTRICTION AVEC boUSER

POUR UTILISER LE LOGIN DANS LES RESTRICTION, uil faut utiliser les restriction au niveau univers et appliquer une restriction du type
<champ controle user>=@variable ('BOUSER')

ça fonctionne tres bien en document webi par contre j'ai des pb de rafraichissement de la variable pour les documents deski (client lourd) publiés..

si quelqu'un à une explication et/ou solution sur ce point?

Hervé
lecorf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 23h19   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2011
Messages : 30
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 30
Points : 13
Points : 13
Bonjour à tous, je suis également dans cette situation.

Nous avons Boxi4 - plusieurs sites avec des reports communs - afin d'être assurer que l'utilisateur ne voit que les données de son site j'aurais voulu filtrer sur le login mais je ne sais pas comment faire.


Comment mettre la restriction suivante au niveau univers ?
<champ controle user>=@variable ('BOUSER')
bobobo7569 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 09h48   #8
Modérateur
 
Avatar de djam21
 
Homme
Consultant en Business Intelligence
Inscription : janvier 2006
Messages : 560
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Luxembourg

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Finance

Informations forums :
Inscription : janvier 2006
Messages : 560
Points : 862
Points : 862
Envoyer un message via Skype™ à djam21
Pourquoi ne pas utiliser les restrictions au niveau de l'univers dans ton cas ?

Pour chaque groupe utilisateur appartenant chacun à un site, tu appliques un filtres sur la requête...

En fonction de la requête, il faudra s'assurer que la requête passe par la table à filtrer... en ajoutant une condition qui s'applique à tout l'univers...
djam21 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 00h00   #9
Candidat au titre de Membre du Club
 
Inscription : décembre 2011
Messages : 30
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 30
Points : 13
Points : 13
Bonjour et merci Djam21 pour ta réponse.

Concrètement, je vais avoir 30/50 reports utilisés par plusieurs sites. Afin d'éviter que je multiplie les reports en créant des conditions pour chaque site, il me faut une condition dynamique en fonction de l'utilisateur qui s'applique à tout l'univers et aux reports.

Je pensais donc créer une table avec les utilisateurs et leur affecter un code.
Ex : pour l'utilisateur 1 => site = 1; pour l'utilisateur 2 => site IN( 1 & 2 & 3).

Comment je peux détecter l'utillisateur qui se connecte par BO et appliquer la condition dynamiquement sur l'univers ou les reports ?
bobobo7569 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 09h34   #10
Modérateur
 
Avatar de djam21
 
Homme
Consultant en Business Intelligence
Inscription : janvier 2006
Messages : 560
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Luxembourg

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Finance

Informations forums :
Inscription : janvier 2006
Messages : 560
Points : 862
Points : 862
Envoyer un message via Skype™ à djam21
Ton utilisateur lambda appartient à un groupe utilisateur qui devra dans ton cas correspondre à un site (voir CMC).

Au niveau Designer, tu as la possibilité d'ajouter un filtre sur ton site en fonction du groupe d'appartenance de ton utilisateur...

Une icône positionnée dans la barre des tâches te permet de faire çà.

D'un côté (1), tu crées la restriction : il y a un onglet "Table" je pense... Tu y définis la table à filtrer et le filtre sur un de tes sites.
Tu fais çà autant de fois que tu as de sites.

De l'autre côté (2), tu importes tes groupes utilisateurs "site".

Puis tu appliques la restriction (1) à ton groupe (2)...

Et voilà...
djam21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h55.


 
 
 
 
Partenaires

Hébergement Web