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

SSRS Discussion :

[SSRS][MDX] Problème paramètre mutli valeurs


Sujet :

SSRS

  1. #1
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut [SSRS][MDX] Problème paramètre mutli valeurs
    Bonjour,

    J'ai un petit problème pour la récupération d'un paramètre en multi value.
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
    StrToSet (
    '{ [Segments].[Bureau].&[" + Join(parameters!ChoixBureau.Value ,",")  +"] }'
    , CONSTRAINED)  ON COLUMNS
    FROM [FMS]
    Les restrictions imposées par l'indicateur CONSTRAINED dans la fonction STRTOSET n'ont pas été respectées.

    Je souhaite récupérer une liste déroulante de numéros de bureaux
    Exemple : 000, 100 , 103 , 106
    Je peux cocher 1 ou plusieurs numéros pour lancer ma requête, d'où le multi value. Le paramètre est bien réalisé, mais le dataset ne veut pas le prendre en compte.

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Points : 339
    Points
    339
    Par défaut
    Pour que ta fonction "strtoset" fonctionne, il faut que la valeur de ton paramètre retourne une chaine de style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Segments].[Bureau].&[000], [Segments].[Bureau].&[100],[Segments].[Bureau].&[103]
    Ton code mdx serait alors simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT 
    StrToSet (@ChoixBureau, CONSTRAINED)  ON COLUMNS
    FROM [FMS]
    Donc, ta configuration de paramètre doit changer pour récupérer le "member unique name" de chaque membre.

    Ton utilisation de paramètre dans ton code mdx est mauvaise.

  3. #3
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    euh... je comprends pas.
    J'ai modifié le dataset correspondant à la liste des bureaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ="
     SELECT 
    NON EMPTY { [Measures].[Nombre Ecritures] } ON COLUMNS, 
    NON EMPTY { ([Segments].[Bureau].CURRENTMEMBER.UNIQUENAME ) } ON ROWS 
    FROM [FMS]
    "
    Voici le dataset principal où je filtre en intégrant le paramètre cité plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ="
     SELECT 
    NON EMPTY { [Measures].[Solde Euro], [Measures].[Credit Euro], [Measures].[Debit Euro] } ON COLUMNS, 
    NON EMPTY { ([Segments].[Compte].[Compte].ALLMEMBERS * [Segments].[Bureau].[Bureau].ALLMEMBERS  ) }  ON ROWS 
    FROM
            ( SELECT ( [Temps Periode].[Année - Mois - Date].[Date].&[2008-01-01T00:00:00] : [Temps Periode].[Année - Mois - Date].[Date].&[2008-08-31T00:00:00] ) ON COLUMNS 
              FROM
                   ( SELECT ( { [Segments].[Compte].&[979103], [Segments].[Compte].&[979104] } ) ON COLUMNS
                     FROM
                             (SELECT StrToSet (@ChoixBureau, CONSTRAINED) ON COLUMNS                            FROM [FMS]
                             )
                     )
              )
    "
    et voici en piece jointe le parametrage de ChoixBureau


    Merci d'y jeter un coup d'oeil.

    Sinon concernant ta démarche, les codes que je viens d'ajouter sont suite à ta réponse, et je reçois donc comme erreur :
    la fonction attend une expression d'ensemble de tuples pour l'argument 1. Une expression de chaîne ou numériqu a été utilisée.

  4. #4
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Non en fait, comme tu es en OLE DB, il ne faut pas utiliser le @.

    Ton dataset précédent te donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
    StrToSet (
    '{ [Segments].[Bureau].&[100, 1000, 002] }'
    , CONSTRAINED)  ON COLUMNS
    FROM [FMS]
    Ce qui ne marchera pas forcément.

    Il faut que chaque valeur de ton parametre renvoie le tuple correspondant donc [Segments].[Bureau].&[100], [Segments].[Bureau].&[1000] etc

    A partir de là, ton dataset sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FROM SELECT 
    StrToSet (
    '{" + Join(parameters!ChoixBureau.Value ,",")  +"] }'
    , CONSTRAINED)  ON COLUMNS
    FROM [FMS]
    qui devrait te renvoyer quelquechose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FROM SELECT 
    StrToSet (
    '{[Segments].[Bureau].&[100], [Segments].[Bureau].&[1000]}'
    , CONSTRAINED)  ON COLUMNS
    FROM [FMS]
    Et là ca devrait marcher.

    Edit :
    J'oubliais, pour le dataset de ton parametre bureau, je verrai plutot quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH 
    MEMBER [name] AS 
    	'[Segments].[Bureau].CURRENTMEMBER.MEMBER_CAPTION'
    MEMBER [value] AS 
    	'[Segments].[Bureau].CURRENTMEMBER.UNIQUENAME'
    SELECT 
    non empty
    {[name], [value]} 
    ON 0,
    non empty {[Segments].[Bureau].allmembers} on 1 
    FROM [FMS]
    Que tu peux améliorer par exemple avec un iif dans le membre calculé pour n'afficher que ceux qui ont une valeur pour une mesure donnée. Par exemple :

    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
    WITH
    MEMBER [Total]as '[Measures].[Total sales]'
     
    MEMBER [Country_Caption] AS 
    	iif([Total]=0
    		,null
    		,[Segments].[Bureau].CURRENTMEMBER.MEMBER_CAPTION) 
     
    MEMBER [Country_Value] AS 
    	iif([Total]=0
    		,null
    		,[Segments].[Bureau].CURRENTMEMBER.UNIQUENAME) 
     
    SELECT 
    non empty
    {[name], [value]} 
    ON 0,
     
    non empty {[Segments].[Bureau].allmembers} on 1 
     
    FROM [FMS]
    Le non empty se chargera de virer ceux qui ne t'interessent pas.

  5. #5
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    Bonjour,

    Quelques modifs que j'ai faite sur ton post Reskibil :
    - concernant le dataset du paramètre bureau
    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
    WITH
    MEMBER [Total] AS '[Measures].[Total sales]'
     
    MEMBER [Country_Caption] AS 
    	iif([Total]=0
    		,NULL
    		,[Segments].[Bureau].CURRENTMEMBER.MEMBER_CAPTION) 
     
    MEMBER [Country_Value] AS 
    	iif([Total]=0
    		,NULL
    		,[Segments].[Bureau].CURRENTMEMBER.UNIQUENAME) 
     
    SELECT 
    non empty   {[Country_Caption], [Country_Value]} ON 0,
    non empty {[Segments].[Bureau].allmembers} ON 1 
    FROM [FMS]
    et concernant le dataset principal, un ']' était en trop
    ( SELECT StrToSet (' {" + Join(parameters!ChoixBureau.Value ,",") + "}' , CONSTRAINED) ON COLUMNS
    FROM [FMS]
    maintenant ça marche ^^

    Merci beaucoup

    edit : le paramétrage -->

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

Discussions similaires

  1. [SSRS][2k5] Ou MDX : 2 paramètres et 2 datasets
    Par hiline6 dans le forum SSRS
    Réponses: 0
    Dernier message: 14/01/2009, 13h10
  2. Réponses: 9
    Dernier message: 12/09/2008, 16h08
  3. [2K5][SSRS][MDX] Problème de requete
    Par geof dans le forum SSRS
    Réponses: 6
    Dernier message: 17/07/2008, 16h10
  4. [SSRS]Relier un paramètre rapport à une requête MDX
    Par ennamsaoui dans le forum SSRS
    Réponses: 5
    Dernier message: 03/04/2008, 16h25
  5. Réponses: 4
    Dernier message: 04/02/2008, 16h35

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