11
votes

SSRS Rapports - Forcer la table à développer au bas de la page

J'essaie de créer un rapport de type facture où j'ai un en-tête, un corps principal avec une table (qui comprend une section de totaux) et une page de page.

Le problème que je reçois est, la hauteur de la table dans le corps principal dépend du montant de mon nombre de lignes de mon SPROC, d'où s'il n'y a pas beaucoup de données, la table prend une petite partie au milieu de la page avec Les "totaux" et "Disclaimer" se terminent nulle part près du bas de la page (idéalement, veulent le mettre juste au-dessus du pied de page).

J'ai vu des guides pour contourner ce problème, avec la méthode générale pour ajouter des lignes vierges (NULL) dans la SPROC, obligeant la table à être plus grande que prévu et forçant ainsi la ligne de totaux et de non-déiliation à proximité du fond de la page.

J'ai mis en œuvre cette solution mais il y a quelques problèmes avec cela.

Cependant, le problème avec cette méthode est que la logique ne fonctionne que si la ligne dans la table ne prend que 1 ligne (c'est-à-dire une brève description afin que la ligne ne débordne pas à la ligne suivante). Une fois que la ligne a plusieurs lignes, la hauteur de la ligne change et, étant donné que la hauteur n'est pas un multiple de 1 ligne (c'est-à-dire une rangée unique est la taille 1, la double rangée doit être la taille 2 mais est à la place, taille 1,5 ou quelque chose), je ne peut pas prendre en compte combien de lignes je devrais ajouter dans la SPTP.

J'ai essayé une autre méthode où les lignes que j'ai besoin sont séparées de la table principale (qui me donne des problèmes en soi - je ne peux pas calculer les totaux dans le rapport, mais je suppose que je pourrais faire le tour de cela en calculant le total dans la SPUDO elle-même) et sont cachés jusqu'à la dernière page.

Cette méthode serait bonne, sauf que, avec cette méthode, l'espace vide s'affiche toujours, arrêtant la table de se développer à cette zone.

J'ai inclus un lien vers Imgur pour décrire mon problème actuel qui devrait être plus facile à comprendre.

Il doit y avoir un moyen plus facile de forcer la table à prendre tout l'espace.


0 commentaires

4 Réponses :


2
votes

Vous pouvez ajouter la "ligne totale" et les termes du pied de page et afficher la grille s'il s'agit de la dernière page du rapport comme indiqué ici: SSRS Afficher la valeur uniquement sur la dernière page du corps du rapport en bascule l'attribut" caché ".


1 commentaires

Bonjour Dan, merci pour la réponse, je pense que c'est un peu différent de ce que je suis après. Je ne veux pas que les totaux affichent juste à la fin de la page - mais aussi au bas de la page, comme indiqué dans le lien Image, j'ai collé. Une seule façon serait de mettre une zone de texte sur le pied de page et de faire les calculs de totaux sur la SPROC elle-même. Toutefois, lorsque j'ai essayé cette méthode, cachez la zone de texte était insuffisante car elle a toujours pris de l'espace où la boîte de texte aurait été - j'aimerais qu'il ne prenne aucune place du tout.



2
votes

La prémisse de base de ma solution consistait à incorporer un élément "caché" dans le corps du rapport. Cet élément peut se développer ou rétrécir de manière dynamique pour modifier la distance entre la dernière des lignes de facturation et la section Détails du paiement, et semble donc conserver les détails de paiement "fixes" au bas du rapport ....

http://blogs.adatis.co.uk/blogs/harding/archive/2013/02/01/ABsolute-Positioning-of-Report-Element-in-ssrs.aspx


2 commentaires

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement des liaisons peuvent devenir invalides si la page liée change.


Hé merci pour le lien, mais malheureusement, j'ai déjà essayé ceci (en utilisant SQL au lieu de SSRS) en vain. Mon problème est que la ligne peut grandir (et je ne peux pas l'arrêter de grandir) qui vis avec le calcul de la ligne. Il semble que le lien que vous avez fourni indique également que la hauteur de la ligne de facture ne peut pas augmenter sinon il ne fonctionnera pas. S'il y avait un moyen de faire pousser la rangée d'une certaine manière (1 rangée = 1px, 2 rangées = 2px au lieu de 1,3 px, etc.), cela serait toujours pertinent mais je ne sais pas si cela est possible.



6
votes

Tout cela peut être atteint dans la conception du rapport lui-même. Voici ce que vous savez:

  • la hauteur de la page (p)
  • La hauteur de vos données statiques
  • la hauteur de votre tête (h)
  • La hauteur de votre ligne de données (R)
  • le nombre de lignes de données (c)
  • la hauteur de votre pied de page (F)

    Vous pouvez donc déterminer la taille de l'espace restant sur la page: P - ((C * R) + S + F + H)

    Quand je travaillais dans mon problème, j'ai réalisé que j'avais besoin de deux "entretoises" lorsque l'espace restant sur la page était trop petit pour s'adapter au pied de page; Spacer One rempli dans le reste de la page 1 tandis que Spacer 2 était l'espace disponible à la page 2 - P - (S + F + H).

    Ainsi, vous aurez besoin de sections cachées dans le rapport pour effectuer les calculs de hauteur et deux rangées de détail pour des entretoises sous toutes les autres lignes de détail.

    Il y a une solution de démonstration que j'ai créée sur github qui montre cette fonctionnalité "Pin-to-Bas" En action, ainsi que réinitialiser les numéros de page pour les groupes, les en-têtes / pieds donnés sur des données, la traduction de label et le formatage international (taille de la page, formats de numéro, etc.).

    Pour ce regard sur la facture de vente 5.


1 commentaires

Le problème est que je cherche une réponse où mes articles de ligne n'ont pas de hauteur fixe à la place, ils incluent un texte multiligne



3
votes

En fin de compte, j'ai réglé pour une solution qui est très proche de ce que je dois et implique à utiliser des éléments cachés. (Semblable à ce que Dan Andrews a suggéré - mais répondait à ce que je avais besoin)

Alors tout d'abord, j'ai inclus les totaux dans le pied de page du rapport afin qu'il reste au tout le temps en bas. P>

Ceci est illustré ci-dessous: p>

Qu'est-ce que l'apparence du rapport comme p>

Dans le bas de page de sous-totaux, j'ai placé un message " suite à la page suivante » qui est aussi un champ caché - il en est ainsi je peux montrer ce message sur les rapports qui ont plus de 1 montrant la page (d'où l'utilisateur sait qu'il ya plus de 1 page pour le rapport et si l'espace n » t regard aussi mauvais) p>

pour masquer le champ total, je l'expression suivante dans le "caché" la propriété. p>

=iif(Globals!PageNumber=Globals!TotalPages,true,false)


0 commentaires