SSRS-Berichte - Tabelle erzwingen, um bis zum Seitenende zu expandieren

8

Ich versuche, einen Rechnungstypbericht zu erstellen, wo ich eine Kopfzeile, einen Hauptteil mit einer Tabelle (die einen Summenbereich enthält) und eine Fußzeile habe.

Das Problem ist, dass die Tabellenhöhe im Hauptteil davon abhängt, wie viele Zeilen von meinem SPROC zurückgegeben werden. Wenn also nicht viele Daten vorhanden sind, wird die Tabelle einen kleinen Teil in der Mitte der Seite mit aufnehmen Die "Summen" und "Disclaimer" enden nicht am unteren Rand der Seite (im Idealfall, wollen Sie es direkt über der Fußzeile).

Ich habe Leitfäden gesehen, um dieses Problem zu umgehen, mit der allgemeinen Methode, leere (Null-) Zeilen in SPROC hinzuzufügen, die Tabelle größer als erwartet zu zwingen und die Summe und die Disclaimer-Zeile dazu zu zwingen, in der Nähe von zu liegen die Seite.

Ich habe diese Lösung implementiert, aber es gibt ein paar Probleme damit.

Jedoch besteht das Problem bei dieser Methode darin, dass die Logik nur funktioniert, wenn angenommen wird, dass jede Zeile in der Tabelle nur eine Zeile einnimmt (d. h. eine kurze Beschreibung, so dass die Zeile nicht zur nächsten Zeile überläuft). Sobald die Zeile mehrere Zeilen hat, ändert sich die Höhe der Zeile, und da die Höhe kein Vielfaches von 1 Zeile ist (dh eine einzelne Zeile hat die Größe 1, sollte die doppelte Zeile die Größe 2 haben, ist aber die Größe 1.5 oder so), d kann nicht berücksichtigen, wie viele Zeilen ich in der SPROC hinzufügen sollte.

Ich habe eine andere Methode versucht, bei der die Zeilen, die ich brauche, von der Haupttabelle getrennt sind (was mir selbst Probleme bereitet - kann Summen im Bericht nicht berechnen, aber ich denke, ich könnte das umgehen, indem ich die Summe in der SPROC selbst berechne) und sind bis zur letzten Seite versteckt.

Diese Methode wäre gut, außer dass bei dieser Methode der leere Bereich immer angezeigt wird und die Tabelle daran gehindert wird, in diesen Bereich zu expandieren.

Ich habe einen Link zu imgur eingefügt, um mein aktuelles Problem zu beschreiben, das leichter zu verstehen sein sollte.

Es muss einen einfacheren Weg geben, um zu erzwingen, dass die Tabelle den gesamten Platz einnimmt.

    
Hanho 18.02.2014, 21:56
quelle

4 Antworten

3

Am Ende habe ich mich für eine Lösung entschieden, die sehr nahe an dem ist, was ich brauche, und mit versteckten Elementen zu arbeiten. (ähnlich dem, was Dan Andrews vorgeschlagen - aber gesorgt, was ich brauchte)

Also habe ich zuerst die Summen in die Fußzeile des Berichts eingefügt, so dass sie die ganze Zeit unten bleibt.

Dies wird unten gezeigt:

In der Fußzeile der Zwischensummen habe ich die Meldung "Fortsetzung auf der nächsten Seite" platziert, die auch ein verstecktes Feld ist. Dies ist der Fall, damit ich diese Meldung in Berichten mit mehr als einer Seite anzeigen kann mehr als 1 Seite für den Bericht und so sieht das Leerzeichen nicht so schlecht aus).

Um das Summenfeld auszublenden, habe ich den folgenden Ausdruck in der "hidden" Eigenschaft:

%Vor%

Und für das Feld "Fortsetzung":

%Vor%

Nun besteht das Problem darin, dass die Fußzeile nicht weiß, was die aufgezählten Werte sind, weil die Fußzeile keinen Zugriff auf die Tabelle im Berichtskörper hat.

Um dieses Problem zu umgehen, habe ich einen "Summen" -Abschnitt erstellt, der Teil der Tabelle ist, die alle Berechnungen durchführt, die ich in der Fußzeile anzeigen muss.

Ich setze einen Namen für jedes der Textfelder, auf die ich in der Fußzeile zugreifen möchte:

Und auf dem entsprechenden Fußzeilenelement habe ich den Ausdruck so:

Jetzt, da die Fußzeile die Summen enthält, wird das Summenfeld immer unten angezeigt, unabhängig davon, wie groß die Tabelle ist (was mein anfängliches Problem war - die Fußzeile wurde platziert, wohin sie wollte) mit einem kleinen Kompromiss von auf allen Seiten eine Leerstelle haben, die nicht die letzte ist. Ich habe stattdessen eine Meldung "Fortsetzung auf der nächsten Seite" eingefügt, die zeigt, dass es mehr Seiten zum Bericht gibt und es so aussieht, als ob der Leerraum verwendet wird.

Dies ist ein Beispiel für eine einzelne Seite:

Und das ist ein mehrseitiges Beispiel:

    
Hanho 16.06.2016, 02:35
quelle
6

All dies kann im Berichtsentwurf selbst erreicht werden. Folgendes wissen Sie:

  • Die Höhe der Seite (P)
  • Die Höhe Ihrer statischen Daten (S)
  • Die Höhe Ihrer Kopfzeile (H)
  • Die Höhe Ihrer Datenzeile (R)
  • Die Anzahl der Datenzeilen (C)
  • Die Höhe Ihrer Fußzeile (F)

So können Sie herausfinden, wie groß der verbleibende Platz auf der Seite ist: P - ((C * R) + S + F + H)

Als ich mein Problem durcharbeitete, erkannte ich, dass ich zwei "Abstandhalter" brauchte, wenn der auf der Seite verbleibende Platz zu klein für die Fußzeile war; spacer 1 füllte den Rest der Seite 1 aus, während Spacer 2 der verfügbare Platz auf Seite 2 - P - (S + F + H) war.

Sie benötigen also versteckte Abschnitte im Bericht, um die Höhenberechnungen durchzuführen, und zwei Detailzeilen für Abstandhalter unter allen anderen Detailzeilen.

Es gibt eine Demo-Lösung, die ich auf GitHub erstellt habe und die diese "Pin-to-Bottom" -Funktion zeigt in Aktion sowie das Zurücksetzen von Seitenzahlen für Gruppen, datengesteuerte Kopf- / Fußzeilen, Etikettenübersetzung und internationale Formatierung (Seitengröße, Zahlenformate usw.).

Sehen Sie sich dazu Verkaufsrechnung 5 an.

    
Adrian Nichols 03.06.2014 10:01
quelle
2

Sie könnten die "Summenzeile" und die Begriffe zur Fußzeile hinzufügen und das Raster anzeigen, wenn es sich um die letzte Seite des Berichts handelt, wie hier zu sehen: SSRS zeigt nur Wert auf der letzten Seite im Berichtskörper an , indem das Attribut" hidden "umgeschaltet wird.

    
SQLMason 18.02.2014 22:04
quelle
2

Die grundlegende Prämisse meiner Lösung war, ein "verstecktes" Element in den Berichtskörper zu integrieren. Dieses Element kann dynamisch vergrößert oder verkleinert werden, um die Entfernung zwischen den letzten Rechnungszeilen und dem Abschnitt mit den Zahlungsdetails zu ändern, und scheint daher die Zahlungsdetails am Ende des Berichts "fixiert" zu lassen ....

Ссылка

    
user3525379 14.04.2014 22:28
quelle

Tags und Links