Dernière valeur d’un DataSet comme valeur par défaut

C’est drôle comme parfois une solution toute bête peut vous échapper pendant pas mal de temps. Lorsque vous utilisez un DataSet pour remplir les available values d’un paramètre dans SSRS, il vous est sûrement déjà arrivé de souhaiter sélectionner la dernière valeur comme valeur par défaut (allez par hasard pour une dimension temps).

Donc première intuition vous sélectionnez une expression comme valeur par défaut, expression qui fait référence au DataSet en cours (Fields!…) pour prendre la dernière valeur (aggrégation Last()).

Et vous prenez une erreur comme quoi vous ne pouvez pas utiliser Fields! dans ce type d’expression d’où vous faites comme tout le monde et vous réécrivez un DataSet spécifique pour la dernière valeur, ce qui est quand même dommage d’un point de vue bases de données, parce que l’info vous l’avez déjà dans le DataSet précédent…

Et en réfléchissant un peu on trouve rapidement une solution: il suffit de déclarer un paramètre « dummy », internal et multivalué, qui prend les valeurs du même DataSet que le vrai paramètre intéressant en available et en default. Dans notre paramètre initial, section default, il suffit alors de saisir l’expression:

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

Et ça marche: on n’a pas le droit de référencer Fields! mais on peut référencer Parameters dans cette expression.
En espérant que ça vous serve, à bientôt!

7 réflexions sur “Dernière valeur d’un DataSet comme valeur par défaut

  1. Intéressant.Personnellement, sur la dimension temps j'ai plutôt tendance à classer les mois par ordre décroissant. Cela évite que l'utilisateur n'ait à balayer une liste importante (60 mois pour 5ans) pour atteindre le plus souvent le mois en cours ou un des 2 derniers mois.Dans le cas d'un paramètre monovalué, en mettant simplement comme dataset source pour les valeurs par défaut, le même dataset que celui pour la liste des valeurs, on obtient pas défaut le premier élément sélectionné donc le dernier mois connu.

  2. Merci pour la précision, effectivement ça se défend. L'approche avec l'internal conserve ceci dit l'avantage de permettre de ressortir n'importe quel élément sans un data set dédié🙂

  3. Merci pour l’information. Je n’ai plus qu’a tester meme si quelque part je faisais pire que la solution n°2 puisque je faisais un TOP n sur mon deuxieme dataset

    • Salut! Oui sachant qu’à l’époque je voulais que ce soit purement RS (i.e. que ça marche sur du SQL 2000, du MDX… où il n’y a pas de over). Et puis c’est dommage de dupliquer un cout de calcul au moteur d’exécution pour une faiblesse du front de reporting non?

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

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s