Access Page number in report body In SSRS

2019-01-19 04:47发布

问题:

I want to use Globals!PageNumber in Report body part. How can I access inside Report body?

I am using SQL Server Reporting Service 2008 R2.

回答1:

Create functions in the code under the report properties:

Page Number:

Function PageNumber() As String    
    Return Me.Report.Globals!PageNumber    
End Function

Total Pages:

Function TotalPages() As String   
    Return Me.Report.Globals!TotalPages    
End Function

Access it in the body via an expression:

=code.PageNumber & " of " & code.TotalPages

Check out Sample Usage of the Concat Function



回答2:

Unfortunately in Reporting Services (up to RS2008), this will produce "Page 1 of 1" on every page. The problem is that the body is rendered before the header and footer, therefore the code cannot access the correct pagination, since it is determined AFTER all elements in the body.

If your report is basically a large table with predefined number of rows on each table, try using row_number in your SQL as a workaround to manually calculate page numbers: http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/c2047eee-41a8-4d79-ae58-dbf60f6e7554/



回答3:

you can't use page number in body. use it only in report footer or header.



回答4:

For that you need to use Report variables:

Go to Report Menu from main Menu in Visual Studio, > Click on Report Properties > Add new variable - named as PageCount (Default value to 0)

Then inside header of footer create one textbox and set below expression,

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

It will automatically increase for each page.

NOTE: Do not hide it from header or footer, the SetValue will not work if you hide the box, so change the font of textbox to white color. (Do whatever you want but just do not hide it. Then you can use below expression to fetch pagenumber value inside report body.

=Variables!PageCount.Value

I have taken reference from this answer.