Categories: Visual Studio / SSRS

[SSRS] Comment utiliser un seul dataset pour remplir un paramètre et sélectionner sa valeur par défaut.

Francois Jehl dans son article « [SSRS] dernière valeur d’un dataset comme valeur par défaut » (cf 1.) nous propose une méthode intéressante pour éviter de dupliquer inutilement des datasets et donc des appels inutiles à la base de données. Bien qu’utile, son article a nécessité quelques adaptations pour fonctionner chez moi.


La méthode consiste donc à créer un nouveau paramètre qui servira à sélectionner la valeur par défaut de votre paramètre principale.
Pour cela, ouvrez votre report data, puis faites un clic droit sur le dossier ‘parameter’ et sélectionnez ‘add parameter’.
Dans ce dossier l’ordre des paramètres est important. Votre nouveau paramètre doit se trouver au-dessus du paramètre pour lequel vous voulez sélectionner une valeur par défaut. Si ce n’est pas le cas vous obtiendrez l’erreur suivante :

An error occurred during local report processing.
The defaultValue expression for the report parameter ‘TimeMonthName’ contains an error. 
The expression references the parameter ‘TimeTop’, which does not exis in the Parameters collection. 
Letters in the names of parameters must use the correct case.

C’est logique, puisque vous voulez utiliser la valeur d’un paramètre non encore résolu dans l’ordre de traitement des paramètres.
Déplacez donc votre paramètre à l’aide des petites flèches présente en haut de la fenêtre ‘report data’ pour que celui se retrouve au-dessus de l’autre.

L’importance de l’ordre des paramètres dans SSRS

Ouvrez les propriétés de votre nouveau paramètre (clic droit ‘parameter properties’).
Dans l’onglet principal :
– donnez un nom à votre paramètre.
– Cochez la case multiple valeurs ‘Allow multiple values’.
– Et déclarez votre paramètre en interne (Internal).
C’est une donnée interne. Elle ne sert que sur le rapport courant donc autant mettre ‘internal’ plutôt que ‘hidden’ ca évitera de surcharger inutilement vos listes de variables possibles lorsque vous ferrez un lien (action) vers ce rapport. Cela évitera aussi sa modification.

Visibilité des paramètres

Bien maintenant, il ne nous reste plus qu’à donner à ce nouveau paramètre la même source de données que notre paramètre principal.
Donc dans ses propriétés, dans l’onglet ‘Avaible Values’ et ‘Default Values’ sélectionnez votre dataset.

Fenêtre propriétés des paramètres

Notre parametre ‘défaut’ étant créé nous allons maintenant pouvoir l’utiliser pour déclarer la valeur par défaut de notre paramètre principal.
Pour cela, il suffit d’aller dans les propriétés de celui-ci et dans l’onglet ‘Default Values’ de saisir l’expression (bouton ‘fx’) suivante :

 =Parameters!Nom_Parametre_default.Value(Parameters!Nom_Parametre_default.Count-1)

Parameters!Nom_Parametre_default.Count-1 permet d’obtenir le nombre de valeur moins une contenu dans le paramètre.
Parameters!Nom_Parametre_default.Value(X) permet d’obtenir la valeur à la position X de la liste du paramètre.

Et voilà, le résultat.

Exemple, de paramètre

Alors pourquoi est-on obligé de passer par toute cette manipulation ou par un deuxième dataset, juste pour sélectionner une valeur par défaut ? Tout simplement pour éviter cette erreur :

An error occured during local report processing.
The definition of the report ‘/mon rapport’ is invalid. 
A Value expression used for the report parameter ‘TimeMonthName’ refers to a field. 
Fields cannot be used in report parameter expressions.

Ce qui est logique vous essayez de filtrer les valeurs d’un paramètre en fonction des valeurs d’un champ d’un dataset qui est potentiellement lui-même filtré à partir du dit paramètre ce qu’interdit SSRS. (Vous connaissez l’histoire du serpent qui se mord la queue ?)



Pour aller plus loin :
[SSRS] dernière valeur d’un dataset comme valeur par défaut
[SSRS] Problème de chargement d’un dataset (et multi requête SQL dans un dataset)


Arnaud

Webmaster & Administrateur de UIOP.

View Comments

Share
Published by
Arnaud
Tags: SSRS

Recent Posts

[Agile] De l’importance d’écrire des taches claires pour vos User Stories

Dans le monde de l'agilité, le Product Owner se doit d'écrire des user stories simples,… Read More

4 ans ago

[Actu] Printemps des poètes

Parce que, contrairement à ce que l'on pourrait penser ce soir qu'il pleut des cordes,… Read More

5 ans ago

[Actu] Élections présidentielles 2017

Un peu d’humour en attendant le résultat des élections présidentielles françaises. Read More

7 ans ago

[Linux] Activer/Désactiver l’UTC en ligne de commande

Si vous n'avez pas accès à l'interface graphique de votre Linux, vous pouvez modifier l'horloge… Read More

8 ans ago

[Actu] Ces fous qui attaquent Paris

Si quelqu'un m'avait dit en Janvier que je réécrirais un article dans l'année sur des… Read More

8 ans ago

[Actu] Fin des vacances, c’est la rentrée 2015 !

Il y a quelques semaines, mois, voire années (tout est subjectif) nos enfants (et nos… Read More

9 ans ago