web-dev-qa-db-fra.com

Tableau matriciel: Répétez les lignes d'en-tête sur chaque page qui ne fonctionne pas - Générateur de rapports version 3.0

J'ai un tableau matriciel 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 le Générateur de rapports version 3.0. Est-ce vrai? Si non, y a-t-il autre chose à faire?

154
Ayrton Senna

Cela dépend de la structure de tablix que vous utilisez. Par exemple, dans une table, vous ne disposez pas de groupes de colonnes. Par conséquent, Reporting Services ne reconnaît pas les zones de texte qui constituent les en-têtes de colonne. Définir la propriété RepeatColumnHeaders sur True ne fonctionne pas.

Au lieu de cela, vous devez:

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

La propriété KeepWithGroup spécifie le groupe auquel le membre statique doit adhérer. Si défini sur After, le membre statique reste collé au groupe après, ou au-dessous, agissant comme un en-tête de groupe. Si défini sur Before, le membre statique reste collé au groupe avant ou au-dessus, agissant comme pied de groupe. Si défini sur None, Reporting Services décide où placer le membre statique.

Maintenant, lorsque vous affichez le rapport, les en-têtes de colonne sont répétés sur chaque page du tableau.

This la vidéo montre comment définir exactement la réponse décrite.

395
Stacia

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

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

Les en-têtes de colonne doivent maintenant être répétés sur chaque page.

16
parkerw262

Comment j'ai résolu ce problème si j'ai manuellement changé le code derrière (à partir du menu Voir/code). La section ci-dessous devrait avoir autant de paires de <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 tableau matriciel. De même, si vous accédez au "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 du 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>
9
user3508487

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

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

Cliquez sur chaque groupe statique jusqu'à ce qu'il apparaisse l'en-tête de colonne le plus à gauche. C’est généralement le premier groupe statique répertorié.

Dans la grille des propriétés:

  • mettre KeepWithGroup à After
  • définir RepeatOnNewPage sur True pour les en-têtes répétés
  • mettre FixedData à True pour que les en-têtes restent visibles
8
Elmer

Si vous avez toujours ce problème, vous pouvez également procéder de la manière suivante:

  • Effacer tout le texte de l'en-tête de la table, laissez-le vide.
  • Dans la section "En-tête" des rapports, ajoutez des zones de texte dans un rectangle. Chaque zone de texte représente un en-tête de colonne pour le tableau.
  • Comme ce rectangle se trouve dans la section En-tête des rapports, il apparaîtra sur toutes les pages du rapport.

Merci, Sufian.

5
Sufian O

Ce qui a fonctionné pour moi a été de créer un nouveau rapport à partir de zéro.

Ceci fait et le nouveau rapport fonctionne, je vais comparer les 2 fichiers .rdl dans Visual Studio. Ceux-ci sont au format XML et j'espère un WindDiff rapide ou quelque chose qui révélerait 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 gros des deux étant le fichier défectueux. Un coup d'œil rapide sur les balises TablixHeader n'a révélé aucune évidence.

Mais dans mon cas, il s’agissait d’un fichier .rdl corrompu. Celui-ci avait été initialement copié à partir d'un rapport de travail. Ainsi, le processus de suppression des éléments non réutilisés aurait pu le corrompre. Toutefois, dans les autres rapports où ce même processus a été effectué, les en-têtes peuvent être répétés lorsque les paramètres corrects ont été 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 post de forum. Je vais essayer ça de mon côté.

2
user1585204