[ACCEPTED]-Compare current page number with last page number-jasper-reports
waited for a long time .. but no reply from 6 Stackoverflow... Anyway i found my solution..
First 5 in your summary band put this line
<printWhenExpression><![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]></printWhenExpression>
Remember 4 this above line must be only in the summary 3 band of the report.
After that you can compare 2 this parameter at any point of time in your 1 report to find last page number .
For Example
<printWhenExpression><![CDATA[new Boolean(!$V{PAGE_NUMBER}.equals($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber")))]]></printWhenExpression>
With the following Print When Expression 13 the summary band gets printed again:
new Boolean(($P{REPORT_PARAMETERS_MAP}.put(
"LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen")) ||
Boolean.TRUE)
You 12 can also use containskey tot test for the 11 existance of the key:
new Boolean(!$P{REPORT_PARAMETERS_MAP}.containsKey("LastPageNumber"))
Nummeric expressions 10 also work, this expression evaluates to 9 true on every page except the one on which 8 the parameter is set:
new Boolean($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber") < $V{PAGE_NUMBER})
My problem was that 7 I created multiple group footers for several 6 crosstabs at the end of my report, with 5 a constant as the group expression so they 4 get printed only once. By setting the parameter 3 in the first footer I can now finally surpress 2 the column headers without resorting to 1 subreports. Great work!!
Berry.
unfortunately your approach didn't worked 15 for me i dont know why.. there are some 14 stuff about your code that are error-prone 13 like this
<![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]></printWhenExpression>
i think in fact that the Summary Band
is called 12 only once but you have a bad programming 11 practice in this because if there is not 10 key associate with the KEY in the MAP
it will return null 9 and the you call the method equals
on it you would 8 receive NULLPOINTEREXCEPTION
but i think not in this case.
you 7 should reverse like this
<![CDATA[new Boolean("dummyPrintWhen".equals($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER})))]]></printWhenExpression>
the workaround i 6 used on this question is the following.
1). create 5 a parameter in jasperreports
parameter name="totalRecordsOnReport" class="java.lang.Integer"
2). pass the totals records 4 of your detail as parameter.
HashMap<Object,Object>parameters=....
parameters.put("totalRecordsOnReport",yourDetailRowCount);
i need to print 3 some stuff only in the last page below the 2 detail and i use this code.
component print when expression
$V{REPORT_COUNT}.equals($P{totalRecordsOnReport})
and prints in 1 the last page.
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.