2014-06-13 1 views
6

Ich denke, viele Entwickler stehen vor dem Problem, Seitenzahlen mit SSRS 2008 R2 anzuzeigen.Wie wird die Seitenzahl im Berichtskörper von SSRS 2008 R2 angezeigt?

Es gibt eine alternative Lösung , die SSRS 2010 + Version erfordert. Ansonsten bekommst du die ganze Zeit 1.

Zum "Report" ->"Report Eigenschaften" ->"Code"

Im Custom Code Abschnitt, geben Sie Folgendes:

Public Function PageNumber() as String 
    Dim str as String 
    str = Me.Report.Globals!PageNumber.ToString() 
    Return str 
End Function 

Public Function TotalPages() as String 
    Dim str as String 
    str = Me.Report.Globals!TotalPages.ToString() 
    Return str 
End Function 

Jetzt werden Sie Diese Funktionen können überall im Bericht (Kopfzeile, Text oder Fußzeile) aufgerufen werden. Also, die Seitenzahl und Gesamtseitenzahl in einem Textfeld zur Ausgabe im Körper befindet, geben Sie einfach diese für den Wert:

="Page " + Code.PageNumber() + " of " + Code.TotalPages() 

This Lösung mit SSRS 2008 NICHT R2 arbeiten.

Es gibt jedoch eine Problemumgehung, es wird mit jeder höheren Version als 2008 R2 (einschließlich 2008 R2) arbeiten. Ich werde als Antwort posten, hoffe, dass es einigen Leuten helfen wird, die mit diesem Problem kämpfen.

+0

Funktioniert nicht für mich! in SQL Server 2012. – Rama

+1

Dies funktioniert nicht in SQL Server 2016. –

+2

@HuseinRoncevic Sorry Mann, schrieb ich diesen Beitrag im Jahr 2014, ich habe keine Chance, SSRS 2016 zu verwenden ......... –

Antwort

10

Zuerst müssen Sie Berichtsvariablen verwenden: rechts auf den leeren Raum des Berichts klicken -> Variablen -> Erstellen Sie eine Variable wie Pagecount (set Standardwert 0)

dann in Sie Header oder footer -> create ein Textfeld und setzen Ausdruck ->

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

Es wird automatisch für jede Seite erhöht. (WICHTIG: NICHT verstecken es von Kopf- oder Fußzeile, der SetValue wird nicht funktionieren, wenn Sie die Box ausblenden, so ändern Sie die Schriftart auf 1 oder Text zu weiß, was auch immer tun, nur nicht verstecken (es wird gedruckt ‚True‘, wie die Einstellung Orte nahm))

Dann können Sie verwenden:

=Variables!PageCount.Value 

an irgendeinem Teil Ihres Rohbericht die Seitennummer zuzugreifen.

WICHTIG: Bitte beachten Sie, dass ich versucht habe, Globals! PageNumber zu verwenden, um die Variable einzustellen, aber es wurde NICHT von Bericht Körper zugänglich. Also, es muss etwas sein, das sowohl von Header/Footer OR Body aus zugänglich ist.

In meinem Fall muss ich die Seitenzahl für jede Instanz meiner Gruppe zurücksetzen. Also habe ich am Ende der Gruppe einen Trigger gesetzt. (z. B. überprüfe ich, ob mein Gesamtwert zurückkehrt, weil ich weiß, dass ich für jedes Ende meiner Gruppe eine Gesamtanzeige habe.

Wegen in Funktion IIF beide Wahr und Falsch Teil verarbeitet werden, also wenn Sie Setter in IIF so setzen, wie unten:

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

) 

werden Sie endet haben Wert 0 die ganze Zeit, weil der Bericht wird der wahre Teil dann den falschen Teil prüfen, werden beide Setter ausgeführt werden (Wert zweimal eingestellt wird)

so brauchen wir zwei Boxen und so etwas wie: (Sie haben unnötige Feld Ihre Prüfung Bedingungen zu verbergen)

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

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

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

Wieder müssen Sie dieses Feld verstecken, wenn IsNothing(ReportItems!TotalBox.Value)

Natürlich können Sie eine andere Art und Weise nutzen könnten das Ende zu bestimmen, Eine Gruppeninstanz wie: erstellt ein Textfeld, das am Ende der Gruppentabelle NUR einen festen Wert enthält. und verstecke es. Wenn Sie den Trigger überprüfen, tun Sie einfach den gleichen Ansatz wie ich.

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

+0

Danke, es hat funktioniert für mich. – Snesh

+1

@ Vin.X Funktioniert nicht für mich! in SQL Server 2012 – Rama

+0

Dies erhöht die Seitenzahl beim Zurückgehen einer Seite. –

0

In Visual Studio 2013Report variables wird Visible unter Bericht Menü sein.

Vom Hauptmenü - Bericht>ReportProperties>Variablen>hinzufügen

0

Erste Folgen Sie den Schritten 1 unten Paginierung zu tun:
1)
1,1. Klicken Sie im Bereich Zeilengruppen auf die Gruppe Details.
1.2. Erweitern Sie im Bereich Eigenschaften des Tablix-Mitglieds "Gruppe" -> "PageBreak".
1.3.Stellen Sie die „BreakLocation“ auf „Beenden“ und stellen Sie die „Disable“ Eigenschaft auf den Ausdruck wie folgt:

=IIF(rownumber(nothing) mod 40=0,false,true) 

Der obige Punkt ist 1 Verwendung Paginierung in Reportausgabe (Display nur 40 Datensätze pro Seite in der Ausgabe zu tun)

2) Verwendung benutzerdefinierter Code:

Public Function PageNumberno(val as integer) as String 
    Dim str as String 
    str =(val/40) 
    Return str 
End Function 

3) Berechnete Spalt im Datensatz erstellen und =0 in Ausdruck

eingeben

4) 2 Berechnete Spalte
1) Pageno
2) Keine
in Dataset

In Report Körperausdruck für PageNo verwenden:

=code.PageNumberno(Rownumber("DataSet1")) 

Verwendung Expression für Nr:

=IIF(Instr(code.PageNumberno(Rownumber("DataSet1")) 
,".")<>0, 
(Left(code.PageNumberno(Rownumber("DataSet1")), 
(Instr(code.PageNumberno(Rownumber("DataSet1")),".")-1))+1) 
,code.PageNumberno(Rownumber("DataSet1")) 
) 

5) Rechts klicken und einfügen Spalte auf der rechten Seite und in der Spalte Name Code in Textfeld

=ReportItems!No.Value 

Hinweis: No berechnet Feld Spaltenname.

6) Unter AdvancedMode in Zeile Gruppe Static wählen und Set RepeatOnNewPage Eigenschaften zu True

in der obigen Spalte unter Punkt erstellt wird 5 keine richtige Seite angezeigt wird auf jeder Seite in Teil des Berichts

Ich habe versucht und es funktioniert gut ... Versuchen Sie es.

Verwandte Themen