2010-07-05 9 views
23

मैं अपने Jasper रिपोर्ट जोJasper में शून्य मान से बचने के लिए कैसे रिपोर्ट

$F{address_street1}+" "+$F{address_street2}+ " " +$F{address_state} + " "+$F{address_country}+ " "+$F{address_zip} 

मेरे समस्या यह है कि अगर यहां कोई भी फ़ील्ड रिक्त है मैं शून्य मान मिलता है की तरह एक अभिव्यक्ति महत्व है में एक क्षेत्र है

101 Main St****null****ILUnited States12345 

अन्य चीज़ों के बीच हाइलाइट किए गए शून्य पर ध्यान दें। क्या कोई रास्ता है जिससे मैं इससे बच सकता हूं?

मैंने बूलियन अभिव्यक्ति का उपयोग करके इसे एक विशेष क्षेत्र के लिए शून्य मान की जांच करने और इसे रिक्त स्थान से बदलने की कोशिश की है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।

उत्तर

36

संपत्ति को isBlankWhenNull पर सेट करें।

  • iReport में रिक्त स्थान की जांच करें जब आपका फ़ील्ड चुना जाता है तो नल चेकबॉक्स।
  • जैस्पर jrxml फ़ाइल में: <textField isBlankWhenNull="true">
+2

यह काम नहीं करता है क्योंकि मेरा कुल क्षेत्र (जो एक से अधिक व्यक्तिगत क्षेत्र का एक संयोजन है) शून्य क्षेत्र का केवल एक हिस्सा नहीं है जो शून्य है, जिसे मैं –

+4

से बचाना चाहता हूं, यह उत्तर एक बहुत ही आम प्रश्न शामिल है .. लेकिन इसमें यहां पूछे गए प्रश्न को शामिल नहीं किया गया है। यद्यपि प्रश्न में पर्याप्त जानकारी सुनिश्चित करने के लिए पर्याप्त नहीं है, लेकिन शायद "ग्रोवी" से "जावा" तक रिपोर्ट भाषा को बदलने के लिए पर्याप्त होगा। – mdahlman

+0

विशिष्ट प्रश्न के लिए सही नहीं है! नीचे दिए गए उत्तर को पढ़ें https://stackoverflow.com/a/3186360/1241276 – lory105

27

अभिव्यक्ति में आप जावा कोड का उपयोग करने की अनुमति है।

तो आपको यह जांचना है कि फ़ील्ड का मान शून्य है, तो उसे खाली स्ट्रिंग के साथ बदलें।

$F{address_street1} == null ? "" : $F{address_street1}+ " " + 
$F{address_street2} == null ? "" : $F{address_street2}+ " " + 
$F{address_state} == null ? "" : $F{address_state} + " " + 
$F{address_country} == null ? "" : $F{address_country}+ " " + 
$F{address_zip} == null ? "" : $F{address_zip} 
+2

आईरपोर्ट 3.7.4 में अभी भी किसी के लिए प्रमुख है, यह काम नहीं करता है। किसी कारण से ($ एफ {फ़ील्ड} == शून्य?एक्स: वाई) शून्य लौटाता है (जिसे जावा टर्नरी ऑपरेटर में झूठ में अनुवादित किया जाता है)। –

8

@Vash, हाँ सिवाय इसके कि मुझे लगता है कि आप कोष्ठकों के अंदर प्रत्येक अभिव्यक्ति डाल करने के लिए चाहते हो सकता है ताकि प्रत्येक अभिव्यक्ति दूसरों से स्वतंत्र है मैं क्या कर सकता है। इस तरह:

($F{address_street1} == null ? "" : $F{address_street1}+ " ") + 
($F{address_street2} == null ? "" : $F{address_street2}+ " ") + 
($F{address_state} == null ? "" : $F{address_state} + " ") + 
($F{address_country} == null ? "" : $F{address_country}+ " ") + 
($F{address_zip} == null ? "" : $F{address_zip}) 
+1

मैं इसे लंबे समय से कर रहा हूं लेकिन मुझे उम्मीद है कि किसी के पास कम वर्बोज़ समाधान होगा। –

1

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

$F{address_stree2}.equals("null") 
0

आप एक जावा कोड लिख सकते हैं

package com.xyz 

Class ReportUtil 
    { 
     public static String getMyString (String str1 , String str2) 
     { 
      if((str1!=null) && (str2!=null)) 
       return str1 + " " + str2 ; 
      else if str1==null 
        return str2 ; 
      return str1 ;        
      } 

    } 

JRXML में, आपको निम्न अभिव्यक्ति पाठ बॉक्स में उपयोग कर सकते हैं:

के बाद से हर रिपोर्ट चर एक स्ट्रिंग है, अशक्त उपयोग के लिए जाँच करने के लिए

com.xyx.ReportUtil.getMyString ($F{firstName},$F{lastName}) 

सेट "खाली है जब अशक्त" सच

लिए संपत्ति

सादर,

अंकुश

2
($F{address_street1}.equals(null) ? "" : $F{address_street1}+ " ") + 
($F{address_street2}.equals(null)l ? "" : $F{address_street2}+ " ") + 
($F{address_state}.equals(null) ? "" : $F{address_state} + " ") +    
($F{address_country}.equals(null) ? "" : $F{address_country}+ " ") +   
($F{address_zip} .equals(null) ? "" : $F{address_zip}) 
1

अगर आप JasperReports-कार्यों उपयोग कर सकते हैं और आप उत्पादन स्ट्रिंग मान करना चाहते हैं, तो आप समारोह टी() जो पाठ स्ट्रिंग या रिटर्न के साथ यह कर सकते हैं खाली स्ट्रिंग।

टी ($ एफ {FirstName})

-1
($F{address_street1} + " " + $F{address_street2} + " " + $F{address_state} + " " + 
    $F{address_country} + " " + $F{address_zip}).replaceAll("null", "") 
+5

कृपया इसे बेहतर प्रारूपित करें और कुछ स्पष्टीकरण दें कि यह उत्तर क्यों है। –

5

पहले इस समस्या को हल करने के लिए, क्षेत्र गुण जाँच रिक्त जब iReport में या अगर शून्य चेकबॉक्स यह जैस्पर jrxml फ़ाइल है: <textField isBlankWhenNull="true">

फिर मुझे यह हल करने के लिए दो तरीकों मिला। नीचे एक तरीका का वर्णन करें। इस

$F{variableName}.equals("0")? "" : $F{variableName}

की तरह अभिव्यक्ति वाक्य रचना
1. और आप जैसे

$F{variableName}== null ? "" : $F{variableName}

तरह

$F{address_street1}.equals("0")? "" : $F{address_street1} + " " + 
$F{address_street2}.equals("0")? "" : $F{address_street2} + " " + 
$F{address_state}.equals("0")? "" : $F{address_state} + " " + 
$F{address_country}.equals("0")? "" : $F{address_country} + " " + 
$F{address_zip}.equals("0")? "" : $F{address_zip} 

2. उपयोग अभिव्यक्ति वाक्यविन्यास कोड का उपयोग कर सकते हैं और आप उपयोग कर सकते हैं कोड

$F{address_street1} == null ? "" : $F{address_street1} + " " + 
$F{address_street2} == null ? "" : $F{address_street2} + " " + 
$F{address_state} == null ? "" : $F{address_state} + " " + 
$F{address_country} == null ? "" : $F{address_country} + " " + 
$F{address_zip} == null ? "" : $F{address_zip} 
0

आप ecliple + जैस्पर softReports में काम कर रहे हैं, तो आप सिर्फ परती नीचे दिए गए चरणों 1.select क्षेत्र + rightclick और चुनें showProperties विकल्प 2.click TextField चयन BlankWhenNull 3.Compile और पुनर्निर्माण इसे जांचें।

0

मैं इसी तरह के मामले है कि मैं उत्पादन में अशक्त प्रदर्शन रोकने के लिए अगर मैं अशक्त पैरामीटर
मैं अभिव्यक्ति संपादक में T($P{city}) उपयोग करते हैं, यह करने के लिए खाली स्ट्रिंग का मूल्यांकन करना चाहते हैं, तो आप इसे करने के पैरामीटर में सफल नहीं हुआ

टी() पाठ स्ट्रिंग लौट अगर मान एक स्ट्रिंग है, अन्यथा एक खाली स्ट्रिंग दिया जाता है

उदाहरण उपयोग:

$P{name} + " " + (T($P{city}).isEmpty() ? "" : " from ")+ (T($P{city}).isEmpty() ? "" : "\"" + T($P{city}) + "\"") 

अगर मैं $ पी {city} के लिए पैरामीटर पारित
परिणाम है: "रियाद" से

abdulkahliq

अगर मैं $ पी {शहर} में पैरामीटर पास नहीं करता हूं तो परिणाम है:

abdulkahliq

धन्यवाद और सादर,

0

यदि आपका क्षेत्रों स्ट्रिंग्स बस (खाली जब शून्य) पर संपत्ति टिकटिक कर रहे हैं। अन्यथा टर्नरी ऑपरेटर

यदि शून्य प्रिंट कुछ और फ़ील्ड प्रिंट करें।

field==null?whatever:field 
field=null?false:true 

ये दोनों मुद्दे को हल करना चाहिए।

0

निम्न प्रयास करें:

$F{address_street1}.toString() == null ? "" : $F{address_street1}+ " " + 
$F{address_street2}.toString() == null ? "" : $F{address_street2}+ " " + 
$F{address_state}.toString() == null ? "" : $F{address_state} + " " + 
$F{address_country}.toString() == null ? "" : $F{address_country}+ " " + 
$F{address_zip}.toString() == null ? "" : $F{address_zip} 

या सेट रिपोर्ट संपत्ति: जब संसाधन लापता प्रकार: प्रकार खाली

दोनों काम करता है मेरे मामले में।

0

आप टेक्स्टफील्ड ऊंचाई को 1, के रूप में सेट कर सकते हैं, ओवरफ्लो ध्वज के साथ स्ट्रेच को सत्य के रूप में सेट करें और जब खाली हो तो खाली न हो तो फ़ील्ड मान खाली होने पर यह खाली स्थान नहीं छोड़ेगा।

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