Tablix: Répéter les lignes d'en-tête sur chaque page ne fonctionne pas - Report Builder 3.0


164

J'ai un tableau avec beaucoup de lignes qui s'étendent sur plusieurs pages. J'ai défini la propriété Tablix Répéter les lignes d'en-tête sur chaque page, mais cela ne fonctionne pas. J'ai lu quelque part qu'il s'agissait d'un bogue connu dans Report Builder 3.0. Est-ce vrai? Sinon, y a-t-il autre chose à faire?

Réponses:


427

Cela dépend de la structure du tableau matriciel que vous utilisez. Dans une table, par exemple, vous n'avez pas de groupes de colonnes, donc Reporting Services ne reconnaît pas les zones de texte qui sont les en-têtes de colonne et la définition de la propriété RepeatColumnHeaders sur True ne fonctionne pas.

Au lieu de cela, vous devez:

  1. Ouvrez le mode avancé dans le volet Regroupements. (Cliquez sur la flèche à droite des groupes de colonnes et sélectionnez Mode avancé.)
    • Capture d'écran
  2. Dans la zone Groupes de lignes (pas Groupes de colonnes), cliquez sur un groupe Statique, qui met en évidence la zone de texte correspondante dans le tableau matriciel. Cliquez sur chaque groupe statique jusqu'à ce qu'il met en évidence l'en-tête de colonne le plus à gauche. Il s'agit généralement du premier groupe statique répertorié.
  3. Dans la fenêtre Propriétés, définissez la RepeatOnNewPagepropriété sur True.
    • Capture d'écran
  4. Assurez-vous que la KeepWithGrouppropriété est définie sur After.

La KeepWithGrouppropriété spécifie le groupe auquel le membre statique doit rester. S'il est défini sur, Afterle membre statique reste avec le groupe après lui, ou en dessous, agissant comme un en-tête de groupe. S'il est défini sur Before, alors le membre statique reste avec le groupe avant ou au-dessus, agissant comme un pied de page de groupe. S'il est défini sur None, Reporting Services décide où placer le membre statique.

Désormais, lorsque vous affichez le rapport, les en-têtes de colonne se répètent sur chaque page du tableau matriciel.

Cette vidéo montre comment le définir exactement comme la réponse décrite.


1
Stacia, lorsque je sélectionne KeepWithGroup et que j'essaye d'enregistrer, j'obtiens "Le tableau matriciel 'DetailTablix' a un TablixMember non valide. Tous les éléments TablixMember d'un TablixColumnHierarchy doivent avoir la propriété RepeatOnNewPage définie sur false.". Des idées?
moodboom

24
J'ai compris mon problème. Stacia votre réponse est tout à fait correcte, c'est juste une chose difficile à faire. Notez que Stacia demande de modifier la zone Groupes de lignes lors de la définition de la propriété RepeatOnNewPage. Tout le reste de cette solution concerne les colonnes, mais vous devez sélectionner les groupes de lignes (à gauche), pas les groupes de colonnes (à droite), même si vous commencez par cliquer sur le menu déroulant dans Colonnes. Merci Stacia, génial.
moodboom

5
+1 - Je viens de terminer la lecture d'une douzaine de procédures pas à pas à ce sujet partout sur Internet, et c'est la meilleure résolution la plus directe du problème - vous expliquez également POURQUOI les options comptent, ce qui est fantastique. Merci!
JNK

3
cette vidéo montre comment le définir exactement comme la réponse décrite: youtube.com/watch?v=WAO819-gkKw
riz aux crevettes

8
KeepWithGroup = Après, c'était la clé pour moi. Comme trop de choses Microsoft, c'est une astuce non évidente nécessaire pour faire fonctionner une fonctionnalité. Je vous remercie!
leqid

17

J'ai 2.0 et j'ai trouvé ce qui précède pour vous aider; cependant, la sélection d'un statique n'a pas mis en évidence la cellule pour une raison quelconque. J'ai suivi ces étapes:

  1. Sous les groupes de colonnes, sélectionnez avancé et la statique apparaîtra
  2. Cliquez sur la statique qui apparaît dans les groupes de lignes
  3. Définissez KeepWithGroup sur After et RepeatOnNewPage sur true

Maintenant, vos en-têtes de colonne doivent se répéter sur chaque page.


Cela a parfaitement fonctionné ... beaucoup plus simple que la réponse ci-dessus qui n'a pas fonctionné pour moi.
R_Avery_17

malheureusement, cela me fait recommencer à avoir des pages blanches.
Mike

10

La façon dont j'ai résolu ce problème était que j'avais modifié manuellement le code derrière (à partir du menu Affichage / code). La section ci-dessous doit avoir autant de paires <TablixMember> </TablixMember>que le nombre de lignes dans le tableau matriciel. Dans mon cas, j'avais plus de paires <TablixMember> </TablixMember>que le nombre de lignes dans le tablix. De plus, si vous passez en "Mode avancé" (à droite de "Groupes de colonnes"), le nombre de lignes statiques derrière les "Groupes de lignes" doit être égal au nombre de lignes dans le tableau matriciel. La façon de le rendre égal est de changer le code.

<TablixRowHierarchy>
      <TablixMembers>
        <TablixMember>
          <KeepWithGroup>After</KeepWithGroup>
          <RepeatOnNewPage>true</RepeatOnNewPage>
        </TablixMember>
        <TablixMember>
          <Group Name="Detail" />
        </TablixMember>
      </TablixMembers>
    </TablixRowHierarchy>

À ma grande surprise, cela a résolu le problème. J'avais un tableau avec 6 lignes (3 lignes d'en-tête plus un groupe avec un en-tête, des détails et une ligne de pied de page). L'examen de la source a montré 6 <TablixRow> mais 7 <TablixMember> dans le <TablixRowHierarchy>. J'ai fait de mon mieux pour savoir lequel était le supplément (celui qui enveloppait le groupe) et l'ai retiré. Cette version n'a pas pu être rendue, mais le message d'erreur a indiqué qu'une ligne devait avoir ses paramètres <Repeat ...> et <KeepWith ...> modifiés pour correspondre aux précédents; J'ai changé ceux-ci en "vrai" et "après" dans la 3e rangée (statique) et le tour est joué! J'aurais aimé comprendre;)!
GISmatters

Merci pour cela. J'utilise SSRS depuis plus de 10 ans maintenant et je viens de rencontrer ce problème - en effet, il y avait un wrapper supplémentaire de TablixMember autour du groupe (sans doute à partir d'expériences avec l'ajout et la suppression de groupes). Le nettoyage de la liste des membres a résolu le mystérieux en-tête non répétitif.
Carl Daniel

Merci, j'ai dû supprimer deux lignes de TablixMember en excès qui étaient regroupées et ne contenaient aucune donnée. Le signe pour moi dans mon rapport était qu'il y avait deux groupes de lignes statiques au lieu d'un. Une fois que j'ai supprimé l'excès de XML imbriqué, les lignes répétitives ont commencé à fonctionner.
Noppadet

1
Je vous remercie. Seule cette solution a fonctionné pour mon rapport où j'étais confronté au problème similaire.
Syed

apparemment, le paramètre approprié est manquant dans Visual Studio. Les conseils sur les «paramètres avancés» qui se réfèrent à ReportBuilder n'ont donc pas aidé. L'édition manuelle du fichier a fonctionné comme un charme. Merci!
MovGP0

9

Ouvrez Advanced Modedans le volet Regroupements. (Cliquez sur la flèche à droite des groupes de colonnes et sélectionnez Mode avancé.)

Dans la zone Groupes de lignes (pas Groupes de colonnes), cliquez sur un groupe Statique, qui met en évidence la zone de texte correspondante dans le tableau matriciel.

Cliquez sur chaque groupe statique jusqu'à ce qu'il met en évidence l'en-tête de colonne le plus à gauche. Il s'agit généralement du premier groupe statique répertorié.

Dans la grille des propriétés:

  • réglé KeepWithGroupsurAfter
  • défini RepeatOnNewPagesur Truepour répéter les en-têtes
  • défini FixedDatasur Truepour garder les en-têtes visibles

5

Si vous rencontrez toujours ce problème, vous pouvez également procéder comme suit:

  • Effacez tout le texte de l'en-tête du tableau et laissez-le vide.
  • Dans la section "En-tête" des rapports, ajoutez des zones de texte à l'intérieur d'un rectangle, chaque zone de texte représentera un en-tête de colonne pour le tableau.
  • Comme ce rectangle se trouve dans la section En-tête des rapports, il s'affichera sur toutes les pages du rapport.

Merci, Sufian.


2

Ce qui a fonctionné pour moi, c'est de créer un nouveau rapport à partir de zéro.

Ceci fait et le nouveau rapport fonctionnant, je vais comparer les 2 fichiers .rdl dans Visual Studio. Ceux-ci sont au format XML et j'espère qu'un WindDiff rapide ou quelque chose révélera quel était le problème.

Un premier regard montre qu'il y a 700 lignes de code ou un peu plus de différence entre les deux fichiers, le plus grand des 2 étant le fichier défectueux. Un coup d'œil rapide sur les balises TablixHeader n'a rien révélé d'évident.

Mais dans mon cas, c'était un fichier .rdl corrompu. Cela a été initialement copié à partir d'un rapport de travail, donc lors du processus de suppression de ce qui n'a pas été réutilisé, cela aurait pu le corrompre. Cependant, dans d'autres rapports où ce même processus a été effectué, les en-têtes pouvaient se répéter lorsque les paramètres corrects étaient définis dans Propriétés.

J'espère que cela t'aides. Si vous avez un rapport complexe, ce n'est pas la solution miracle, mais cela fonctionne.

Peut-être que comparer de bons fichiers XML connus à des fichiers défectueux de votre côté ferait un bon message sur le forum. Je vais essayer ça de mon côté.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.