web-dev-qa-db-fra.com

Reporting Services: Tablix RepeatColumnHeaders ne fonctionne pas sur certains rapports

J'ai donc divers rapports qui consistent en un DataSet rendu dans un Tablix ... des trucs assez variés. Il existe une propriété pour le contrôle Tablix nommée RepeatColumnHeaders , que j'ai définie sur True pour chaque rapport en question. L'explication de cette propriété indique "Indique si les en-têtes de colonne sont répétés sur chaque page sur laquelle une partie de la région de données apparaît." Cela semble assez simple, mais sur certains rapports, cela fonctionne et sur d'autres non. Je n'arrive pas à trouver ce qui est différent dans les rapports qui pourraient affecter cela. Sur un rapport où les en-têtes se répètent, il y a un mojo de regroupement assez mystérieux, mais dans un exemple où cela ne fonctionne pas, le Tablix n'a qu'un seul niveau - pas de regroupement. Je m'attendrais à ce que le multi-imbriqué soit le problème, pas le plat.

C'est peut-être un tout autre problème. J'ai jeté ensemble un simple rendu Tablix SELECT * FROM Foo, accepté toutes les valeurs par défaut, ce qui entraîne la répétition de RepeatColumnHeaders sur False, et voici les en-têtes de colonne répéter pour ce rapport ... Grrr.

Toutes les idées sont grandement appréciées.

44
Rex Miller

C'est un peu bizarre de ce que j'ai réussi à déterrer. Dans votre volet de regroupement, sélectionnez le mode avancé, puis sélectionnez votre ligne statique la plus externe. Vous devriez alors voir la propriété "RepeatOnNewPage".

Mise à jour: recherche du mode avancé :
Le commentaire de @HCL renvoie à autre réponse de @ user359904 , qui contient des informations sur la façon de trouver et d'accéder au mode avancé:

  1. Sélectionnez le tablix
  2. Sous le rapport se trouvent "Groupes de lignes" et "Groupes de colonnes", tout à droite de "Groupes de colonnes" se trouve une petite flèche vers le bas.
  3. Cliquez sur la flèche, choisissez Mode avancé.
48
vinny

J'ai trouvé une solution qui fonctionne pour moi. La réponse de Vinny m'y a conduit.

Heureusement, je n'ai pas eu à recréer mon tablix. J'avais trois lignes qui constituaient mon en-tête de tableau matriciel. J'ai ajouté trois lignes en dehors du groupe de niveau le plus élevé. Ces lignes ne sont liées à aucun groupe. J'ai modifié les lignes afin qu'elles reproduisent exactement les lignes d'en-tête que j'avais dans mon groupe de niveau le plus élevé. J'ai défini la propriété KeepWithGroup sur "After" et la propriété "RepeatOnNewPage" sur true pour chacune de ces lignes d'en-tête. J'ai testé le rapport. L'en-tête apparaît en haut de chaque page, mais en raison de la duplication des lignes d'en-tête à l'intérieur du groupe de niveau le plus élevé et au-dessus du groupe de niveau le plus élevé, l'en-tête est répété deux fois en haut de la première page et à chaque saut de section. J'ai supprimé les lignes d'en-tête dans la section supérieure et la duplication a disparu. Les en-têtes se répètent correctement à chaque coupure du groupe de niveau le plus élevé et en haut de chaque page. Il n'y a pas de lignes d'en-tête dans le groupe de niveau le plus élevé.

Pour définir KeepWithGroup et RepeatOnNewPage: Sélectionnez le tablix. Dans la zone de groupe sous le volet de conception, cliquez sur la flèche vers le bas à droite du texte qui lit "Groupes de colonnes" et assurez-vous que "Mode avancé" est coché. Cliquez sur la première ligne statique et définissez la propriété KeepWithGroup sur "After" et "RepeatOnNewPage" sur true. Faites cela pour chacune des lignes qui composent votre en-tête.

16
user359904

Désolé de ne pas avoir marqué votre réponse comme réponse; J'espère que vous garderez les points de répétition.

L'intrigue se corse. Dans trois tests, j'ai trouvé une corrélation 1: 1 entre l'utilisation de l'assistant pour créer un rapport et l'obtention du comportement d'en-tête souhaité, ainsi qu'entre l'utilisation de l'assistant et l'impossibilité d'obtenir le comportement souhaité. De là, j'ai différencié les fichiers rdl pour un exemple fonctionnel et non fonctionnel et j'ai trouvé cet élément:

 <RepeatOnNewPage> true </RepeatOnNewPage> 

Dans le document à:

 Rapport> Corps> ReportItems> Tablix> TablixBody> TablixRowHierarchy 
> TablixMembers> TablixMember 

J'ai ajouté la même chose au rdl non fonctionnel et les en-têtes ont commencé à se répéter.

Cependant, je ne peux pas trouver un paramètre, une propriété, etc. dans le concepteur qui permute cela. Il ne semble pas du tout correspondre aux propriétés évidentes décrites précédemment. Est-ce juste un artefact de l'assistant? Heureusement, c'est une solution assez facile car je n'ai pas pu recréer une douzaine de rapports à l'aide de l'assistant.

14
Rex Miller

Votre message est toujours utilisé;) Merci à tous. Je me suis basé sur ce que vous avez fourni pour trouver une solution pour restaurer les lignes d'en-tête répétitives. Je n'ai pas eu à utiliser le mode avancé, juste un aperçu ... J'avais deux lignes de titre en dehors de tous les groupes de lignes sans groupes de colonnes. Voici ce que j'ai fait pour insérer les deux lignes de titre dans l'en-tête du tableau matriciel:

  1. Cliquez avec le bouton droit sur une ligne de titre et "Ajouter un groupe (groupe de colonnes)", Groupe parent
  2. Grouper par '1' (ce groupe sera supprimé plus tard donc peu importe ce que vous y mettez
  3. Cliquez sur OK et la ligne d'en-tête est ajoutée.
  4. Fusionner toutes les colonnes de la nouvelle ligne d'en-tête
  5. Dans le volet du groupe de colonnes, faites un clic droit sur le groupe qui vient d'être créé et "Supprimer le groupe", sélectionnez la case "groupe uniquement" important
  6. Vous avez maintenant une ligne d'en-tête, vous pouvez insérer une ligne au-dessus ou en dessous pour ajouter plus de lignes d'en-tête.
  7. Déplacez vos lignes de titre dans les nouvelles lignes d'en-tête et supprimez vos anciennes lignes de titre.
  8. Dernier ... assurez-vous de vérifier la propriété Tablix pour "Répéter les en-têtes de colonne sur chaque page"

Cela fonctionnait bien et facilement reproductible (j'avais de nombreux tablix).

Cordialement, Alan

10
Alan

Dans vos rapports où l'en-tête ne se répète pas, avez-vous supprimé la ligne d'en-tête par défaut dans le tableau matriciel à un moment donné? Une fois que j'ai fait cela, quel que soit le paramètre que j'ai essayé, l'en-tête du tableau ne se répétait plus. J'ai dû recréer le tablix pour le faire fonctionner.

2
vinny

J'ajoute quelques captures d'écran de mon serveur SSRS 2012 ..

enter image description here

Maintenant, cliquez sur "(Statique)" sous "Groupes de lignes" et appuyez sur F4.

enter image description here

Lisez également TechNet - SSRS: comment répéter les en-têtes sur chaque page

1
Lijo

C'est maintenant l'année 2014 et je lance la version 2012 et j'ai utilisé votre message pour résoudre mon problème - un développeur expérimenté SSRS dans notre boutique ne savait pas comment résoudre (je suis juste un débutant). Merci beaucoup d'avoir contribué à votre solution - cela semble être un problème intemporel.

1
Gary Melhaff