Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie wird die Seitenzahl im Berichtstext von SSRS 2008 R2 angezeigt?

Zunächst müssen Sie Berichtsvariablen verwenden: Klicken Sie mit der rechten Maustaste auf den leeren Bereich des Berichts -> Variablen -> Erstellen Sie eine Variable wie PageCount (setzen Sie den Standardwert auf 0)

Dann in Ihrer Kopf- oder Fußzeile -> Textfeld erstellen und Ausdruck festlegen ->

=Variables!PageCount.SetValue(Variables!PageCount.Value+1)

Er wird automatisch für jede Seite erhöht. (WICHTIG:Verstecken Sie ihn NICHT in der Kopf- oder Fußzeile, der SetValue funktioniert NICHT, wenn Sie das Feld ausblenden, also ändern Sie die Schriftart auf 1 oder den Text auf weiß, tun Sie was auch immer, einfach NICHT verstecken (es wird 'True' ausgeben, wenn die Einstellung stattfand))

Dann können Sie verwenden:

=Variables!PageCount.Value

an einem beliebigen Teil Ihres Berichtstexts, um auf die Seitenzahl zuzugreifen.

WICHTIG:Bitte beachten Sie, dass ich versucht habe, Globals!PageNumber zu verwenden, um die Variable festzulegen, aber am Ende war sie NICHT vom Berichtstext aus zugänglich. Also muss es etwas sein, auf das sowohl von Header/Footer ODER Body zugegriffen werden kann.

In meinem Fall muss ich die Seitennummer für jede Instanz meiner Gruppe zurücksetzen. Also setze ich einfach einen Auslöser am Ende der Gruppe (z Meine Gruppe i wird eine Gesamtanzeige haben.

Wegen der Funktion IIF Sowohl der wahre als auch der falsche Teil werden verarbeitet, wenn Sie also Setter in IIF einfügen wie unten:

=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),Variables!PageCount.SetValue(0))

 ) 

Sie werden am Ende die ganze Zeit den Wert 0 haben, da der Bericht den wahren Teil und dann den falschen Teil überprüft, beide Setter werden ausgeführt (der Wert wird zweimal gesetzt)

also brauchen wir 2 Kästchen und so etwas wie:(Sie müssen unnötige Kästchen bei Ihren Prüfbedingungen ausblenden)

=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),"")
)

Sie müssen dieses Feld ausblenden, wenn NOT IsNothing(ReportItems!TotalBox.Value) ist

=IIF(NOT IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(0),"")
)

Auch hier müssen Sie dieses Feld ausblenden, wenn IsNothing(ReportItems!TotalBox.Value)

Natürlich können Sie das Ende einer Gruppeninstanz auch auf andere Weise bestimmen, z. B.:Erstellen Sie ein Textfeld, das NUR einen festen Wert am Ende Ihrer Gruppentabelle enthält. und verstecke es. Wenn Sie den Auslöser überprüfen, gehen Sie einfach so vor wie ich.

Es funktioniert gut für alle Versionen über 2008 R2 (im Lieferumfang enthalten).