07 décembre 2007

Reporting Services: Astuce pour gérer les totaux d'une matrice

Une question qui revient souvent sur SSRS: comment utiliser des formules différentes dans les lignes de détail et le total d'une matrice ? La réponse se trouve dans l'utilisation de la fonction InScope().

Prenons une matrice qui nous affiche un total des ventes par clients (en ligne). Celle-ci se présente par défaut comme suit:

L'affichage qui en résulte est le suivant:


Le total utilise donc la même formule que les lignes de détail, à savoir une somme sur les montants.

Nous pourrions imaginer vouloir afficher une moyenne plutôt qu'un somme dans cette zone.
Notre regroupement sur les comptes clients se nommant grpAccountNumber, il faut modifier l'expression de la zone de texte affichant les données comme suit:
=Iif(InScope("grpAccountNumber"),Sum(Fields!TotalDue.Value),Avg(Fields!TotalDue.Value))

Voilà le résultat obtenu:


Cette exemple peut se décliner à volonté pour permettre de différencier les différents niveaux de regroupement par exemple.

A noter que tout ceci sera obsolète avec l'apparition de l'objet Tablix dans le Report Deisgner de SQL Server 2008 qui permettra une plus grande souplesse dans la gestion des matrices.

2 commentaires:

Fabrice a dit…

Merci pour cette astuce !

Anonyme a dit…

Trop bien merci beaucoup