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

Webi Discussion :

[BO XI R2 Webi] Filtre avec demande de saisie


Sujet :

Webi

  1. #1
    Membre averti Avatar de eryk71
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 322
    Points : 323
    Points
    323
    Par défaut [BO XI R2 Webi] Filtre avec demande de saisie
    Bonjour et Bonne Année 2008 !

    Sous Webi, il existe un bouton dans la barre des tâches appelé : "Afficher/masquer le volet filtres".
    Lorsqu'on active ce bouton, on peut filtrer à partir d'une dimension dans une liste les requêtes créées.

    Exemple : je possède 2 dimensions en local
    groupe(resolu) et groupe(traite)

    Lorsque j'active le bouton filtre, je peux filtrer le résultat de mes 2 requêtes.
    Exemple :
    groupe(résolu) Dans liste : DEV
    groupe(traite) Dans liste : DEV

    Actuellement je possède 10 rapports identiques, il n'y a que le filtre qui change. Donc, je désire créer un seul rapport avec un filtre qui demande à l'utilisateur qu'elle groupe il désire dans une liste.

    Je sais qu'il est possible de créer ces filtres dans l'univers mais le problème est que les filtres sont sur des variables locales donc non visible sur le Designer.

    Est ce que je suis obligé de mettre mes variables locales dans l'univers ou il existe un moyen d'obtenir une invite à partir du filtre.

    Merci

  2. #2
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Bonne année 2008 à toi aussi
    Je ne suis pas très pratiquant ... de webi mais je vais te livrer mes remarques plus intuitives que expérimentées :
    • il me semble possible d'utiliser des invites sur des "dimensions en local" (encore qu'il serait pas superflu que tu expliques un peu ce que tu entends par là ... feuille excel ? sql ?)
    • si elle sont issues d'un fichier personnel en local il n'est pas certain qu'elles soit accessibles aux autres utilisateurs ...
    • Si tu as la main sur l'univers le plus simple est effectivement d'y ajouter tes objets perso
    Ce que je perçois pas clairement c'est d'où sort ta liste DEV
    Peux tu préciser tout ça ...

  3. #3
    Membre averti Avatar de eryk71
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 322
    Points : 323
    Points
    323
    Par défaut
    il me semble possible d'utiliser des invites sur des "dimensions en local" (encore qu'il serait pas superflu que tu expliques un peu ce que tu entends par là ... feuille excel ? sql ?)
    J'ai crée 2 dimensions en variable locale dans le fournisseur de données.
    Le but de ces variables locales est de tronquer le libellé contenu dans les objects de l'univers.
    Exemple : Contenu de l'objet [groupe] dans l'univers
    Développement
    Telecom et réseau
    ...
    Code de la variable locale [groupe(traite)]de type dimension crée dans le rapport
    =Si(Gauche([groupe];13) = "Développement";"DEV";
    Si(Gauche([groupe];17)="Telecom et réseau" ;"TEL-RES"...))

    Contenu de la variable locale [groupe(traite)]
    DEV
    TEL-RES
    ...

    Pour résoudre ce problème,

    1)Est t'il possible de créer une invite avec une liste de valeur (qui serait le contenu d'une variable locale).
    2)D'enregistrer le choix de l'utilisateur (dans la liste de valeur) dans une variable.
    3)D'utiliser cette variable (qui contient donc le choix de l'utilisateur) dans la requête
    exemple : [groupe] Egal à nom_de_la_variable

    J'espère que les explications sont plus compréhensible

  4. #4
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    oui oui oui beaucoup plus compréhensible !
    et méa culpa ! j'aurais dû comprendre variables locales quand tu as dit "2 dimensions en local" j'ai pensé que c'était deux dimensions d'une requête non basé sur l'univers ... ah les bulles ont fait des ravages

    Bon alors dans ton cas la réponse est non !
    on ne peut pas mettre de condition dans la requête sur des objets calculés en variable dans le document !
    Et pour cause : les variables sont basées sur les résultats de la requête (ici ton objet [groupe] une fois ramené par l'exécution de la requête.

    En revanche Ta Solution est là :
    Il te faut créer dans la requête un objet personnel qui traiter à l'identique de ta variable les valeurs de [groupe]
    Cet objet, lui, sera utilisable en condition et avec une invite ...
    Peux tu essayer et me dire ce qu'il en est ... car je suis à la maison et n'ai pas BO sous la main.
    A +
    Un doute terrible : je ne suis pas sûr du tout que les objets personnels existent en webi !!!!!

  5. #5
    Membre averti Avatar de eryk71
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 322
    Points : 323
    Points
    323
    Par défaut
    hummmmmmmm c'est quoi un objet personnel?

    Il te faut créer dans la requête un objet personnel qui traiter à l'identique de ta variable les valeurs de [groupe]
    Dans la requête, j'ai fais un clic doirt un peu partout mais je ne peux pas créer d'objet personnel, il n y a que des objets issues de l'univers.

  6. #6
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Désolé je ne trouve pas l'équivalent en webi de ce que propose deski : Créer un nouvel objet à l'aide d'une formule sur un objet de l'univers et utilisable par la suite sur toute requête pointant sur cet univers.

    A ta place j'utiliserais l'opérateur Correspond au modèle avec une invite précisant la syntaxe dans l'énoncé de la question
    Quel Groupe ? (Dév% Tel% ....)

    Sinon, tu peux rentrer dans le SQL de ta requête et le compléter par exemple en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decode(ChampGroupe, 'Développement', 'DEV', 'Telecom et réseau', 'TEL-RES', ... , ..., sinon) as GROUPE_TRAITE
    Méthode :
    1. Cliquer sur Modifier la requête pour atteindre la vue Requête.
    2. Dans la barre d'outils de l'éditeur de requête,cliquez sur Visualiser le SQL. La boîte de dialogue Visualiseur SQL s'affiche
    3. Cliquez sur Utiliser SQL personnalisé.
    4. Modifiez le SQL,
    5. Cliquez sur Valider pour vérifier qu'il n'y a pas d'erreur.
    6. Cliquez sur Enregistrer

  7. #7
    Membre averti Avatar de eryk71
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 322
    Points : 323
    Points
    323
    Par défaut
    A ta place j'utiliserais l'opérateur Correspond au modèle avec une invite précisant la syntaxe dans l'énoncé de la question
    Quel Groupe ? (Dév% Tel% ....)
    Ce code est déjà utiliser dans 3 requêtes dans le même rapport.

    En fait, dans l'univers je possède 3 objets (Group1, Group2 et Group3) ayant le même contenu mais avec des liens vers d'autres objets qui sont différents. (Ceci pour éviter les boucles et à utiliser les Alias et les Contextes).
    Voilà le contenu de ces objets :
    ENG-DEVELOPPEMENT
    ENG-TELECOM
    ...
    FR-EMEA-AFRICA-DEVELOPPEMENT
    FR-EMEA-AFRICA-TELECOM
    FR-DEVELOPPEMENT
    FR-....
    ....
    Dans chaque requête j'ai :
    req1: group1 correspond au modèle FR%
    req2: group2 correspond au modèle FR%
    req3: group3 correspond au modèle FR%

    Ensuite je créee des dimensions en variable locale :
    =Si(Gauche([groupe];16) = "fr-Développement";"FR DEV";
    Si(Gauche([groupe];28)="FR-EMEA-AFRICA-DEVELOPPEMENT"
    Ou Gauche([groupe];22)="FR-EMEA-AFRICA-TELECOM";"FR-EMEA";
    Si(Gauche([groupe];20)="fr-Telecom et réseau" ;"FR TEL-RES";
    ...))

    Sinon, tu peux rentrer dans le SQL de ta requête et le compléter par exemple en ajoutant
    Code :

    decode(ChampGroupe, 'Développement', 'DEV', 'Telecom et réseau', 'TEL-RES', ... , ..., sinon) AS GROUPE_TRAITE
    Si je comprends bien, le but de ce système est de faire une invite avec tout le contenu de la table Champgroupe en affichant le libellé tronqué. De plus, je peux choisir de n'afficher qu'une partie du contenu de la table ChampGroupe.
    C'est une bonne idée, comme ça je n'ai plus besoin des 3 variables locales.
    Le code decode.... est à saisir après le select je suppose.

    Sinon il reste un principale problème, c'est que l'utilisateur devra choisir la même valeur 3 fois de suite, étant donnée que son choix est utilisé dans 3 requêtes différentes pour le même rapport.

    C'est pouquoi je voulais mettre son choix dans une variable puis utiliser cette variable dans chaque requête sans solliciter l'utilisateur , mais qui n'est pas possible sous BO.

    PS : Merci en fait de refléchir à mon problème alors que tu es chez toi.

  8. #8
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Citation Envoyé par eryk71 Voir le message
    C'est une bonne idée, comme ça je n'ai plus besoin des 3 variables locales.
    Le code decode.... est à saisir après le select je suppose.
    Ca dépend de ta base de données ... ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decode(champ ou fonction(champ),valeur1, alors , valeur2, alors, .... , sinon)
    Citation Envoyé par eryk71 Voir le message
    Sinon il reste un principale problème, c'est que l'utilisateur devra choisir la même valeur 3 fois de suite, étant donnée que son choix est utilisé dans 3 requêtes différentes pour le même rapport.
    Pas du tout !
    Requête 1 tu fait égal Créer une invite
    Requêtes 2 et 3 égal Liste d'invites et tu reprend la même
    La question n'est posée qu'une seule fois !
    Citation Envoyé par eryk71 Voir le message
    C'est pouquoi je voulais mettre son choix dans une variable puis utiliser cette variable dans chaque requête sans solliciter l'utilisateur , mais qui n'est pas possible sous BO.

    PS : Merci en fait de refléchir à mon problème alors que tu es chez toi.
    C'est avec plaisir.
    Là je vais m'absenter mais à ce soir

  9. #9
    Membre averti Avatar de eryk71
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 322
    Points : 323
    Points
    323
    Par défaut
    La fonction DECODE ne fonctionne pas dans l'invite, voilà ce que j'ai dans la clause where :

    Group_name LIKE @prompt('Choix du groupe :','A',decode('Group_name','Développement','DEV'),Mono,Constrained,Persistent,,User:0)
    BO me dit qu'il n y a pas d'erreur SQL.

    Lorsque j'execute la requête j'ai l'invite de commande qui me propose de choisir les valeurs de la table group_name.
    Je me demande s'il est possible de modifier les valeurs de l'invite.

  10. #10
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Oh la la
    Tu as fait un furieux mélange de tout ...
    De deux choses l'une :
    ou bien tu utilises la méthode équivalente à Correspond au modèle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Group_name LIKE 
    @prompt('Choix du modèle de groupe :','A','FR%Dév%','FR%Tel%',Mono,Constrained,Persistent,,User:0)
    soit tu répercutes ton decode du select dans la clause where ...
    t'es bien sur une base Oracle ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE  decode(ChampGroupe, 'Développement', 'DEV', 'Telecom et réseau', 'TEL-RES', ... , ..., sinon) = 
    @prompt('Choix du modèle de groupe :','A','DEV','TEL',....Mono,Constrained,Persistent,,User:0)
    Bon c'est un peu difficile à vérifier sans BO

  11. #11
    Membre averti Avatar de eryk71
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 322
    Points : 323
    Points
    323
    Par défaut
    t'es bien dans une base Oracle???
    Oui, je suis bien dans une base Oracle.

    Group_name LIKE
    @prompt('Choix du modèle de groupe :','A','FR%Dév%','FR%Tel%',Mono,Constrained,Persistent,,User:0)
    Le code ne fonctionne pas, j'ai une erreur SQL.
    Il me semble après plusieurs tests que en utilisant le "@prompt", il faut précisier la table source (Group_name)

    Group_name LIKE
    @prompt('Choix du modèle de groupe :','A','tbl_group_name',Mono,Constrained,Persistent,,User:0)
    Pas d'erreur SQL

    Group_name LIKE
    @prompt('Choix du modèle de groupe :','A','FR%Dév%','FR%Tel%','tbl_group_name',Mono,Constrained,Persistent,,User:0)
    Erreur SQL

    Group_name LIKE
    @prompt('Choix du modèle de groupe :','A','tbl_group_name','FR%Dév%','FR%Tel%',,Mono,Constrained,Persistent,,User:0)
    Pas d'erreur SQL, mais il ne prend pas en compte 'FR%Dév%','FR%Tel%' dans l'invite

    WHERE decode(ChampGroupe, 'Développement', 'DEV', 'Telecom et réseau', 'TEL-RES', ... , ..., sinon) =
    @prompt('Choix du modèle de groupe :','A','DEV','TEL',....Mono,Constrained,Persistent,,User:0)
    J'ai le même problème dans le "@prompt"

  12. #12
    Membre averti Avatar de eryk71
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 322
    Points : 323
    Points
    323
    Par défaut
    C'est bon j'ai trouvé il manquait les {} dans le code.
    J'ai une autre erreur qu'il faut que je médite mais l'invite fontionne.

    Merci Bruno2R

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

Discussions similaires

  1. Définir un filtre avec webi ou rich client
    Par li974 dans le forum Webi
    Réponses: 3
    Dernier message: 06/12/2013, 10h33
  2. [Débutant] Résultat filtré avec CONTAINS ?
    Par mimicracra dans le forum Oracle
    Réponses: 17
    Dernier message: 17/07/2006, 15h11
  3. Filtre avec zone de liste déroulante
    Par petitloup71 dans le forum Access
    Réponses: 10
    Dernier message: 08/07/2006, 12h21
  4. Filtre Avec Password
    Par @rkane dans le forum Sécurité
    Réponses: 7
    Dernier message: 15/06/2006, 22h31
  5. Recherche et filtre avec un dynaset
    Par mat75019 dans le forum Access
    Réponses: 10
    Dernier message: 10/04/2006, 19h53

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