2011-02-28 138 views

回答

14

等了很長的時間..但沒有從回覆#1 ... 無論如何,我發現我的解決方案..

首先在摘要帶放此行

<printWhenExpression><![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]></printWhenExpression> 

請記住,上面這行必須只在報告的彙總段中。

之後,您可以在報告中的任何時間點比較此參數以查找最後一個頁碼。

對於實例

<printWhenExpression><![CDATA[new Boolean(!$V{PAGE_NUMBER}.equals($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber")))]]></printWhenExpression> 
+0

您可以詳細說明如何在設計模式下執行此操作嗎? – sarwar026 2012-09-09 10:46:55

+0

你能否向我解釋你想做什麼,我可以幫助你。如果我可以幫助某人,我總是很開心。 – Mihir 2012-09-10 05:06:00

+0

要點是:比較如果參數爲空,則Integer.equals(Integer)將返回false。並且是參數爲空(當彙總帶正在處理時被設置)。所以你可以把地圖布爾(或任何其他對象),並在條件下簡單地使用'$ P {REPORT_PARAMETERS_MAP} .get(「isLastPage」)IS NULL' – Perlos 2012-11-08 08:28:14

3

用下面的打印當表達摘要帶被再次打印:

new Boolean(($P{REPORT_PARAMETERS_MAP}.put(
"LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen")) || 
Boolean.TRUE) 

您還可以使用的containsKey TOT測試爲重點是否存在等:

new Boolean(!$P{REPORT_PARAMETERS_MAP}.containsKey("LastPageNumber")) 

數字表達式也有效,此表達式在以往除了在參數所設定的一個Y頁面:

new Boolean($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber") < $V{PAGE_NUMBER}) 

我的問題是,我在報告的末尾創建了多個組頁腳幾個交叉表,以恆定的組表達,使他們得到的只是印刷一旦。通過在第一個頁腳中設置參數,我現在可以最終抑制列標題而不訴諸子報表。做得好!!

漿果。

+0

謝謝你的回答,我個人使用過'$ P {REPORT_PARAMETERS_MAP} .put( 「LastPageNumber」,$ V {PAGE_NUMBER})。equals(「dummyPrintWhen」)||當'exporsion'和'$ V {PAGE_NUMBER} .equals($ P {REPORT_PARAMETERS_MAP} .get(「LastPageNumber」))時,對於'print when'表示的字段'print' – Nelson 2013-09-19 09:43:19

2

不幸的是你的做法並沒有爲我工作,我不知道爲什麼。有你的代碼中的一些東西,容易出錯這樣

<![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]></printWhenExpression> 

我認爲事實Summary Band只調用一次,但你有一個糟糕的編程習慣,因爲如果沒有與KEY in the MAP密鑰關聯,它將返回null,你調用方法equals就可以得到NULLPOINTEREXCEPTION,但我認爲不是這種情況。

你應該扭轉這樣

<![CDATA[new Boolean("dummyPrintWhen".equals($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER})))]]></printWhenExpression> 

我在這個問題上所用的解決方法如下。

1)。在jasperreports

parameter name="totalRecordsOnReport" class="java.lang.Integer" 

2創建的參數)。傳遞您的詳細信息的總計記錄作爲參數。

HashMap<Object,Object>parameters=.... 
parameters.put("totalRecordsOnReport",yourDetailRowCount); 

我需要打印一些東西只在細節下面的最後一頁,我使用此代碼。

component print when expression

$V{REPORT_COUNT}.equals($P{totalRecordsOnReport}) 

,並打印在最後一頁。

相關問題