SSRS – Répéter un élément d’une liste en tant qu’en-tête/pied de page

Le nom de cet article est peut être mal choisi mais il est difficile de donner un nom à ce genre de problème lié aux listes groupés, en-têtes/pied de page  (header/footer) et la répétition sur plusieurs pages.

Je vais essayer de vous l’expliquer.

Un petit rappel sur les listes dans SSRS.

Si on souhaite répéter un rapport sur plusieurs pages tout en étant libre de diposer des éléments on devra utiliser le composant List de SSRS.
Mais ce n’est pas tout, si on groupe cette liste par un champ/ID  on obtiendra des sous-ensembles de données qui vont être répétés au travers de la liste.
Et pour finir si on ajoute un Page Break sur ce fameux groupe (champs/ID) on aura comme résultat un ensemble de données par page.

Illustration

Pour illustrer rapidement, un petit exemple d’une fiche de renseignements d’une personne dans laquelle on afficherait également un tableau dans lequel on présenterait la liste de ses enfants.

Notre dataset renvoit un  jeu de données avec les informations liés à plusieurs personnes. Après avoir mis en place la liste, le groupement par numéro de sécurité social par exemple et le saut de page après chaque groupe on va obtenir  une seule fiche de renseignements par personne et par page.

De ce style :

Exemple

Bref tout va bien pour l’instant il n’y a rien de sorcier.

On peut tout de même se poser quelques questions.

« Si le tableau des enfants est trop grand ? Par exemple 10 enfants ? « 

Réponse :

« Il débordera sur la seconde page. Bien évidemment pour une meilleure lecture du tableau on pourra répéter les en-têtes de colonnes du tableau. »

Illustration :

Exemple2

Autre question.

« Mais si on souhaite que les  infos générales des parents s’affichent sur toutes les pages de la même manière que sur la première page ? Comme par exemple répéter le nom du parent au début de chaque page ? »

Illustration du résultat attendu :

Exemple3

Réponse :

« Haaa…Let me search🙂 ! »

Désormais ne cherchez plus ! Voici un moyen de répondre a ce type de demande.

L’astuce : Mode d’emploi

Il semblerait que cela fonctionne uniquement avec SSRS 2012, les tests sous SSRS 2008 ne donnent pas le même résultat.

Il existe une petite astuce qui vaut ce qu’elle vaut mais n’hésitez pas à laisser vos commentaires avec différentes pistes pour faire la même chose.

Pour parvenir a mes fins j’ai dû ajouter les champs dans la liste et les cacher (Propriété Hidden du groupe static ou de la ligne).  Par la suite j’ai ajouté un header au rapport dans lequel  je place des TextBoxes.

Grâce à des expressions j’appelle les valeurs de ces champs cachés de la liste via un ReportItems!NomTextbox.Value.
Un bon renommage des noms textbox cachés facilite l’utilisation de la collection ReportItems!.

Un conseil : Ajoutez les champs à utiliser dans le tableau dans une cellule vide de l’en-tête de colonnes ou ajoutant une ligne au dessus de l’en-tête du tableau. Cachez la ligne / les champs n’hésitez pas jouer sur la taille de la police dans certains cas pour ne pas perdre d’espace.

Pourquoi faire ceci ?  Pour le RepeatOnNewPage de l’en-tête de colonnes du tableau, les champs étant cachés dans une zone qui sera répétée sur les nouvelles pages, alors les Textboxs du Header étant eux aussi répétés automatiquement pourront à chaque page récupérer la valeur des champs. Si vous ne le faites pas les champs texte du header n’afficheront pas de valeurs.

ssrs_repeat_list_header

Résultat :

ssrs_header_list_demo

Autre comportement : si vous oubliez  de faire un saut de page dans le groupe alors les textbox du header afficheront les valeurs du dernier groupe de la page.

NOTE I :  On ne peut pas utiliser deux ReportItems  dans une expression.

NOTE II : Cela fonctionne aussi si l’on souhaite répéter dans le footer.

PS : Cela fait un petit moment que je n’ai pas publié d’articles. J’ai débuté une nouvelle expérience dans ma petite vie et j’ai du laissé de côté certaines choses. L’envie ne manquait (presque) pas le temps par contre…

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