L'en-tête de tableau matriciel de ne pas répéter sur une nouvelle page, lorsque le sous-état provoque un saut de page
Je me bats avec SSRS depuis trop longtemps maintenant sur ce que devrait être une affaire simple. J'espère que quelqu'un peut m'aider à trouver une solution.
J'ai un rapport qui a un certain nombre de profils, et chaque profil comporte un grand nombre de sections de données. Les sections de données (divers tableaux et graphiques) ne sont pas liés les uns aux autres dans toute autre manière que celle qu'ils "touche" retour vers le parent de l'id de profil.
L'objectif (ce qui semble simple) est d'avoir un en-tête sur chaque page avec les informations de profil, et ensuite les sections de données (chaque formaté complètement différemment) disposés.
Le premier problème que nous avons rencontré a été que pour une raison SSRS2008 ne permet pas une cellule de tableau matriciel pour contenir un autre tableau matriciel avec un autre jeu de données (pourquoi il ne peut pas juste besoin d'un filtre basé sur le parent de regroupement est au delà de moi). La solution recommandée pour cette lacune est, soit de combiner toutes les données en un gigantesque jeu de données (pas possible ici, sections de données sont trop nombreuses et variées) ou intégrer des sous-rapports et passer dans les paramètres. Alors que l'option numéro deux qui augmente le "travail" nécessaire pour imprimer un grand nombre de profils, nous avons procédé à mettre en œuvre et il ne travail.
Le problème arrive sur le principal de tableau matriciel (celui contenant les sous-états) qui a une statique de la ligne d'en-tête de groupe avec "RepeatOnNewPage = true". Ce paramètre permet à l'en-tête pour afficher sur chaque page comme on le souhaite... sauf pour les sous-rapports les étendre sur plusieurs pages, où l'en-tête est mal oublié.
Pour quelque raison, quand ce dernier s'étend sur plusieurs pages, l'en-tête de la société mère tableau matriciel n'est pas répété! Cela me conduit fou comme il semblerait qu'un couple de mauvaises décisions de conception dans SSRS m'a mis dans une situation où je ne peux pas créer le rapport, je veux... des en-têtes des œuvres sans les sous-rapports, mais j'ai besoin de sous-rapports dans le but de "rejoindre" les sections de données pour le profil de.
Cela semble être un moyen simple et exigence commune... après tout, c'est un rapport qui est en cours de migration à partir d'un vieux de plusieurs décennies système de reporting. J'ai écumé StackOverflow et Google sans succès... j'ai semblent un certain nombre de questions/réponses à propos de sauts de page, mais rien qui suggère une solution à ce problème avec les sous-rapports.
Je poste dans ce cas, je suis en manque de quelque chose. Si quelqu'un a des suggestions à tous, il serait bien apprécié.
- Nous avons plus d'informations sur ce problème. Les manquants en-têtes ne semblent pas être liés à l'utilisation des sous-rapports, mais plutôt que, lorsqu'une ligne de tableau Matriciel est fractionné sur plusieurs pages que le tableau Matriciel en-tête de ligne ne parvient pas à être imprimé (sur les pages supplémentaires). Le sous-état est dans une ligne de tableau matriciel (en raison de la "jointure" limitation, nous avons noté ci-dessus), et le sous-état peut facilement être supérieure à une page dans la longueur. TOUTE AIDE ou suggestion sur ce serait très apprécié.
Vous devez vous connecter pour publier un commentaire.
Très propre et simple de répéter l'en-tête de colonne sur chaque page
http://www.a2zmenu.com/Blogs/BI/Tablix-headers-not-repeating-in-SSRS-2008.aspx
Nous avons résolu notre problème... mais pas dans la voie la plus idéale.
L'en-Tête de Page ("master" rapport, de ne pas les sous-états) semble être le seulement façon de toujours avoir une section d'en-tête.
Nous avons mis en œuvre une solution basée en grande partie sur ce blogue:
La conservation de l'État dans Reporting Services 2008
Nous avons légèrement modifié à partir de l'article du blog, en supprimant "id" de la méthodes et incluant un GUID pour s'assurer que le rapport des valeurs ne sont pas mélangés, même si l'utilisateur exécute plusieurs copies de ce rapport en même temps. (Lors de l'utilisation de variables partagées, rappelez-vous qu'ils sont globaux pour le rapport de courir à travers l'exécution d'instances et de tous les utilisateurs sur le serveur de rapports, de sorte que beaucoup de soin doit être pris lorsqu'ils sont utilisés!)
Dans le corps du rapport, nous avons caché un bloc de texte qui appelle:
et dans le rapport en-tête de page nous de référence comme (par exemple):
Cela fonctionne parce que le corps est calculée avant l'en-tête de page, même pour la Page 1.
Encore, à la fin c'est un hack pour quelque chose qui devrait être dans Microsoft du produit, étant donné qu'ils ont versé des années de développement dans ce produit! Pourquoi nous ne pouvons pas avoir imbriqués tableau matriciel et plus facile à utiliser des en-têtes est au delà de moi... c'est une fois encore mise à niveau d'un rapport à partir d'un programme à partir du début des années 90 qui a fait tout cela sans problème. À tout le moins, de nous donner les variables de rapport qui peut être récupérée et définie comme le rapport est traité!
Peu importe, les choses sont ce qu'elles sont... nous avons testé la solution avec les variables partagées et il semble fonctionner très bien. Nous allons exécuter des tests de stress pour vous assurer qu'il est correctement mis en œuvre, je vais poster quelque chose ici, si nous trouvons d'autres problèmes.
(Et si quelqu'un connaît une autre façon d'obtenir des réponses cohérentes lignes d'en-tête sur les pages, même quand il y a des lignes de détail avec de grandes hauteurs, s'il vous plaît partager...)
J'ai rencontré le même problème. Ce que j'ai trouvé était que le moyen de résoudre la question était de normaliser les données, l'ajout d'un Enregistrement de Type " champ de déterminer si la ligne a été un parent ou d'un enfant.
Il y avait deux sous-tableaux de mon tableau matriciel, les deux affichant les données de détail lié à l'extérieur de regroupement. Si j'ai mis les en-têtes de la sous-tables de répéter sur chaque page (à l'aide de l'Avancée de la flèche > Propriétés Statiques > KeepTogether = True, KeepWithGroup = Après, RepeatOnNewPage = True), alors l'un des sous-tableaux d'affichage, correctement, cependant la table parent est de répéter l'en-tête serait tout simplement disparaître.
De garder une longue histoire courte, cela a été extrêmement ennuyeux problème à résoudre. La solution est simple, il a travaillé pour moi, mais peut ne pas fonctionner pour tout le monde.
Lien ci-dessous est un SSRS2008 exemple RDL qui se connecte à localhost et a un exemple du problème que j'ai eu et aussi la solution que j'ai mis en œuvre. N'hésitez pas à l'utiliser si vous le trouvez utile!
(Je l'ai posté ici, mais de Dépassement de la Pile tombe en panne pour les blocs de code il me semble)
http://www.sqlservercentral.com/Forums/Topic1111567-1633-1.aspx?Update=1
Nous avons rencontré exactement le même problème lors de la mise en œuvre des exigences du client sur les Rapports SSRS,
Et a fait essayer beaucoup de choses qui ont abouti à l'échec.
Dans notre cas,
Rapport principal a 4 sous-rapport. Chaque sous-état doit être commencé dans la nouvelle page. Et aussi, lorsque la nouvelle sous-commence, en-tête de page doit être modifié de façon dynamique en fonction des sous-corps dans la page en cours.
Aussi l'un des sous-rapports qui a été SubReport3 a un autre cas. Fondamentalement, Rapport Principal a été en cours d'exécution basé sur le niveau de Courtier. Mais le Client veut SubReport3 à exécuter pour chaque SubDealer liés avec @Concessionnaire paramètre. Aussi le Client veut voir chaque SubDealer de données a commencé dans la Nouvelle page à l'intérieur de SubReport3.
Comme un résultat, nous avons trouvé la solution à ce problème comme suit.
Nous avons créé la Page en-Tête du Rapport Principal. (Rapport de Menu -> Ajouter un en-Tête de Page)(Comme @codinginthevoid dit, il est plus cohérent)
Nous avons mis 4 sous-rapports à l'intérieur de séparer tableau matriciel. Nous avons ajouté une nouvelle colonne de chaque tableau matriciel. Cette colonne de chaque tableau matriciel visiblity = false, la largeur de la colonne peut être aussi petit que possible, puis créé un espace réservé à l'intérieur de cette colonne, wroted bas expression comme suit:
Si l'expression est dans Tablix1, l'expression a =Tablix1, si dans Tablix2 puis "Tablix2" etc.
Puis a commencé la conception de la page d'en-tête pour Tablix1, chaque élément de rapport dans l'entête de page qui a été posée pour Tablix1 a une visibilité expression comme suit:
ensuite appliqué même chose pour Tablix2 et etc.
À la fin, il y avait beaucoup de zone de texte dans l'en-tête de page de rapport et certains d'entre eux de position a été complètement même, chevaucher, Mais lorsque les rapports est en cours de rendu, chacune de ces zones de texte est affiché, il est lié à la page avec les sous-rapport.