I would like to create one text field that contains Page X of Y
, without splitting it in two parts, as per the common solution. My textfield contains "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"
with evaluationTime=auto
.
Let's say I have a report with 10 pages. Three are the Title Band, six are Detail Band and one is the Summary Band. My results show "Page 0 of 10"
for the Title Bands, correct counts for the Detail Bands, then "Page 0 of 10"
for the Summary Bands.
How do you ensure the variable is calculated everywhere, not only on Detail Band?
Best Answer
Jaspersoft Studio, 6+
For Jaspersoft Studio v6, or if the first page number is duplicated, try this solution, which uses
$V{MASTER_CURRENT_PAGE}
and$V{MASTER_TOTAL_PAGE}
with an evaluation time ofMaster
.Jaspersoft Studio
For other versions of Jaspersoft Studio, try the steps outlined in the subsequent subsections.
Create Variable
Create a variable as follows:
V_CURRENT_PAGE_NUMBER
1
$V{PAGE_NUMBER}
0
, use$V{PAGE_NUMBER} + 1
.1 of Y
, set Expression to$V{PAGE_NUMBER}
instead of the initial value expression, and leave the initial value expression empty.Page
These settings are illustrated in the following figure:
Setting the Expression to
1
prevents its value from beingnull
. That is, if the footer shows Page null of 4 it probably means that the Expression hasn't been set.The variable is created.
Add Page Footer
Add a Page Footer band as follows:
The footer is added.
Create Text Field
Create a text field as follows:
msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
Auto
These settings are illustrated in the following figure:
The single text field is created.
Preview Report
For a report with three pages plus a summary page, previewing the report shows:
The summary page shows: