2011-02-28 12 views
7

के साथ वर्तमान पृष्ठ संख्या की तुलना करें आप यह देखने के लिए कैसे जांचते हैं कि वर्तमान मुद्रित पृष्ठ वास्तव में अंतिम मुद्रित पृष्ठ है या नहीं?अंतिम पृष्ठ संख्या

मैं कोशिश की है निम्नलिखित:

$V{currentPage}.intValue() == $V{totalNumberOfPages} ? 
    Boolean.TRUE : Boolean.FALSE 

उत्तर

14

एक लंबे समय के लिए इंतजार कर रहे थे .. लेकिन Stackoverflow से कोई जवाब नहीं ... वैसे भी मैं अपने समाधान ..

सबसे पहले अपने सारांश बैंड डाल में पाया यह लाइन

<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

+0

क्या आप मुझे बता सकते हैं कि आप क्या करना चाहते हैं, इसलिए मैं आपकी मदद कर सकता हूं। अगर मैं किसी की मदद कर सकता हूं तो मैं हमेशा खुश हूं। – Mihir

+0

प्वाइंट है: पैरामीटर शून्य होने पर तुलना इंटीजर.क्वल्स (इंटीजर) झूठी वापसी होगी। और हाँ पैरामीटर शून्य है (सारांश बैंड प्रसंस्करण होने पर सेट किया गया है)। तो आप बूलियन (या किसी अन्य ऑब्जेक्ट) को मानचित्र में डाल सकते हैं और स्थिति में सरल उपयोग '$ P {REPORT_PARAMETERS_MAP} .get (" isLastPage ") है NULL' – Perlos

3
निम्नलिखित प्रिंट के साथ

अभिव्यक्ति सारांश बैंड फिर से मुद्रित हो जाता है जब:

:

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

आप प्रमुख के अस्तित्व के लिए containskey मुन्ना परीक्षण का उपयोग कर सकते

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

न्यूमेरिक अभिव्यक्तियां भी काम करती हैं, यह अभिव्यक्ति कभी भी सत्य पर मूल्यांकन करती है जिस पर पैरामीटर सेट किया गया है को छोड़कर y पेज:

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

मेरे समस्या यह है कि मैं कई समूह पाद कई crosstabs के लिए मेरी रिपोर्ट के अंत में समूह अभिव्यक्ति के रूप में एक निरंतर साथ इसलिए वे केवल मुद्रित करने के लिए बनाया गया था, एक बार। पहले पाद लेख में पैरामीटर सेट करके मैं अंततः उप-रिपोर्टों का उपयोग किए बिना कॉलम हेडर को दबा सकता हूं। अच्छा कार्य!!

बेरी।

+0

आपके उत्तरों के लिए धन्यवाद, मैंने व्यक्तिगत रूप से '$ P {REPORT_PARAMETERS_MAP} .put ( " LastPageNumber ", $ V {PAGE_NUMBER}) का उपयोग किया। बराबर (" डमीप्रिंटहेन ") || संक्षेप में 'प्रिंट' जब सारांश बैंड 'प्रिंट कब' और '$ V {PAGE_NUMBER} .equals ($ P {REPORT_PARAMETERS_MAP} .get ("LastPageNumber"))' फ़ील्ड 'प्रिंट के लिए' प्रिंट 'के लिए' – Nelson

2

दुर्भाग्य से अपने दृष्टिकोण मेरे लिए काम किया नहीं था मुझे नहीं पता क्यों .. वहाँ अपने कोड के बारे में कुछ सामान है कि त्रुटि प्रवण इस

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

मैं तथ्य यह है कि Summary Band केवल कहा जाता है में लगता है की तरह कर रहे हैं एक बार लेकिन आपके पास खराब प्रोग्रामिंग अभ्यास है क्योंकि KEY in the MAP के साथ कोई महत्वपूर्ण सहयोगी नहीं है, तो यह शून्य हो जाएगा और आप 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}) 

और प्रिंट।

संबंधित मुद्दे