2012-05-23 23 views
6

में मान्य है, तो तालिका में पंक्तियों को मिटाने के लिए कैसे करें IReport में 3 फ़ील्ड (ए, बी, सी) के साथ एक तालिका है। मैं पंक्ति मुद्रित करना होगा अगर iff फ़ील्ड सी शून्य नहीं है।यदि कोई अभिव्यक्ति iReport

  1. एक = पहले, बी = दूसरा, सी = तीसरे

  2. एक = ऊपर, बी = नीचे, सी = शून्य

: उदाहरण के लिए अगर मैं अपने डेटा स्रोत में 2 रिकॉर्ड

तालिका में केवल पहली पंक्ति होनी चाहिए।

मैं प्रत्येक कोशिका में इस अभिव्यक्ति डालने की कोशिश की है (में "प्रिंट जब अभिव्यक्ति" संपत्ति):

!$F{C}.equals(null) 

लेकिन इस तरह से नतीजा यह है कि दूसरी पंक्ति खाली (लेकिन दिखाई) है।

संपादित करें: पहले उत्तर (अब मिट) के बाद तालिका में कॉलम हैं की तरह कुछ:

<jr:column ...> 
<jr:columnHeader ...> 
    <staticText> 
    <reportElement .../> 
     <text><![CDATA[ID]]></text> 
    </staticText> 
</jr:columnHeader> 
<jr:detailCell ...> 
    <textField isBlankWhenNull="false"> 
    <reportElement ... isRemoveLineWhenBlank="true"> 
     <printWhenExpression><![CDATA[$F{ID}!=null]]></printWhenExpression> 
    </reportElement> 
     <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression> 
    </textField> 
</jr:detailCell> 
</jr:column> 
<jr:column ...> 
<jr:columnHeader ...> 
    <staticText> 
     <reportElement .../> 
     <text><![CDATA[CITY]]></text> 
    </staticText> 
</jr:columnHeader> 
<jr:detailCell ...> 
    <textField isBlankWhenNull="false"> 
     <reportElement ... isRemoveLineWhenBlank="true"> 
      <printWhenExpression><![CDATA[$F{ID}!=null]]></printWhenExpression> 
     </reportElement> 
     <textFieldExpression><![CDATA[$F{CITY}]]></textFieldExpression> 
    </textField> 
</jr:detailCell> 
</jr:column> 

डेटा स्रोत एक xml फ़ाइल है। मैंने isBlankWhenNull="true" के साथ भी कोशिश की है लेकिन कोई बदलाव नहीं हुआ है। यहां परिणाम की एक स्क्रीन: tab

+0

क्या आप परिणामस्वरूप रिपोर्ट के स्क्रीनशॉट पोस्ट कर सकते हैं? –

+0

@AlexK अपडेट किया गया। – Baduel

+0

हाँ, यह एक समस्या है। किसी ने पहले ही पोस्ट किया है [jasperforge.org पर इसी मामले] (http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=91738) मंच। –

उत्तर

1

जब आप फ़ील्ड पर अभिव्यक्ति करते समय प्रिंट डालते हैं, तो केवल फ़ील्ड हटा दिया जाएगा। इसलिए, अंतरिक्ष रहेगा। विस्तारित बैंड पर एक ही अभिव्यक्ति रखें और पुनः प्रयास करें।

संपादित करें:

आगे समस्या को देखते हुए, मैंने देखा है कि वहाँ कोई तालिका तत्व का विस्तार स्तर पर रिकॉर्ड छोड़ करने का विकल्प (प्रिंट जब अभिव्यक्ति) है। यह विकल्प मौजूद नहीं है जैसा कि आप iReport में देख सकते हैं और schema definition में भी देख सकते हैं। इसके अलावा, isBlankWhenNull="true" कारण काम नहीं कर रहा है क्योंकि टेक्स्टफील्ड खाली है, फिर भी विस्तार पंक्ति आवंटित ऊंचाई लेती है। साथ ही, प्रिंटवेनएक्सप्रेस जिसे आपने संशोधित करने का प्रयास किया, पूरी तालिका पर लागू होता है, न कि पंक्ति पर। तो ऐसा प्रतीत नहीं होता है कि आप जिस तरह से उम्मीद कर रहे थे, करना संभव है।

यहाँ मैं आप अपनी समस्या को हल करने के लिए निम्न चरणों का दे देंगे:

  1. अद्यतन आपके डेटासेट चलाने संपत्ति के लिए XPath क्वेरी (राइट क्लिक> तालिका डिजाइनर दृश्य से संपादित तालिका डेटा स्रोत) ताकि रिकॉर्ड जहां सी है शून्य छोड़ दिया जाता है।
  2. अपना उप डेटासेट चुनें और कनेक्शन/डेटासॉर अभिव्यक्ति मेनू से "डेटास्रोत अभिव्यक्ति का उपयोग करें" का चयन करें।

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/root[c!='']")

गुड लक:

  • निम्नलिखित अभिव्यक्ति डालें।

  • +0

    मैं दो कारणों के लिए विस्तार बैंड में इस अभिव्यक्ति का उपयोग नहीं कर सकते हैं: 1) क्षेत्र विस्तार बैंड स्तर (यह एक उप डेटा सेट में है) में दिखाई नहीं देता है; 2) यहां तक ​​कि अगर बिंदु 1 झूठा था, अगर मैं तो सभी बैंड (और इसलिए सब मेरी मेज विस्तार बैंड में अभिव्यक्ति डाल) नहीं दिखाई देंगे। – Baduel

    +0

    ओह, sry मैं तुम्हें उप डाटासेट उपयोग कर रहे थे नोटिस नहीं किया था। क्या आपने क्वेरी में शून्य मानों को फ़िल्टर करने पर विचार किया है? – user845279

    +0

    नहीं, एक्सएमएल प्रारूप एक बाहरी प्रणाली द्वारा तय और बनाया गया है। – Baduel

    1

    मुझे इस समस्या का एक और समाधान मिला: तालिका के लिए उपयोग किए गए डेटासेट के लिए, फ़िल्टर अभिव्यक्ति जोड़ना, उदा। $ एफ {dateRemoved} == बातिल।

    इस तरह खाली पंक्तियां हटा दी जाएंगी।

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