2010-08-09 20 views
17

एसएसआरएस (2008) का उपयोग करना आपको शून्य या खाली मूल्यों को संभालने का सर्वोत्तम तरीका क्या है और उन्हें प्रदर्शित करने के लिए किसी और चीज़ के साथ प्रतिस्थापित करें। काफी स्पष्ट समाधानएसएसआरएस टेक्स्ट बॉक्स में खाली या शून्य मूल्य प्रदर्शन

=IIF(IsNothing(Fields!MyField.Value),"NA",Fields!MyFields.Value) 

काम करता है यही कारण है कि हालांकि यह कठिन है, मुझे आशा है कि पाठ बॉक्स पर लेकिन कुछ भी अफसोस एक EmptyText संपत्ति की तरह कुछ को खोजने के लिए किया गया था। कोई विचार? क्या मुझे टेक्स्टबॉक्स आधार से एक कस्टम रिपोर्ट आइटम बनाना चाहिए जो इस संपत्ति को बनाता है?

उत्तर

5

एक कस्टम फ़ंक्शन कॉल करें?

http://msdn.microsoft.com/en-us/library/ms155798.aspx

तुम हमेशा वहाँ में एक मामला stmt डाल 'खाली' डेटा

+2

इस उत्तर का चयन करना क्योंकि अधिकांश लोग एसक्यूएल में आईएसएनयूएलएल से निपटते हैं और यह एक एसएसआरएस विशिष्ट समाधान नहीं है। वैध समाधान लेकिन समस्या का दायरा यहां एसएसआरएस तक ही सीमित है। – keithwarren7

2

जबकि शायद अपने समाधान की तुलना में बेहतर नहीं कोई हो, आप COALESCE का उपयोग कर एक ही परिणाम वापस जाने के लिए अपने T-SQL समायोजित कर सकते हैं:

SELECT MyField = COALESCE(table.MyField, " NA") 

एनए से पहले अतिरिक्त जगह के लिए तर्क जगह पर छँटाई अनुमति देने के लिए है शीर्ष पर एनए परिणाम। चूंकि आपका डेटा भिन्न हो सकता है, यह एक अच्छा विकल्प नहीं हो सकता है।

+2

प्रयास करें यह हमेशा व्यवहार्य नहीं है। 'MATRIX' के मामले में, आपके पास 'PIVOT' परिदृश्य हो सकता है जिसके परिणामस्वरूप आपके फ़ील्ड में" छेद "हो सकता है क्योंकि आप अपने एसक्यूएल में' INNER JOIN 'और' बाएं जॉइन 'के परिणामस्वरूप लागत जुर्माना लगाएंगे। – MarkD

0

मैं प्रदर्शन पर सहमत हैं एसक्यूएल तरफ की जगह है, लेकिन IsNull फ़ंक्शन का उपयोग किया जाएगा के विभिन्न प्रकार संभाल करने के लिए कर सकता है जिस तरह से मैं जाऊंगा।

SELECT ISNULL(table.MyField, "NA") AS MyField 

मैं आमतौर पर हमारे एसक्यूएल सर्वर पर डेटा की प्रोसेसिंग के रूप में ज्यादा करते हैं और संभव के रूप में SSRS में रूप में छोटे डेटा हेरफेर करने की कोशिश। यह मुख्य रूप से इसलिए है क्योंकि मेरा एसक्यूएल सर्वर मेरे एसएसआरएस सर्वर से काफी शक्तिशाली है।

+0

मैं 'IsNull' पर 'COALESCE' का पक्ष लेता हूं क्योंकि मैं ओरेकल और एसक्यूएल सर्वर और दोनों के साथ' COALESCE 'कार्यों के साथ काम करता हूं। – TomG

0

एसक्यूएल में या रिपोर्ट कोड में या तो (प्रति एडॉल्फ लहसुन के समारोह सुझाव के रूप में)

समय में इस पल में, मैं यह रिपोर्ट में क्या चाहते हैं। मेरे पास एक व्यस्त OLTP सर्वर और एक अभिभूत रिपोर्ट सर्वर के खिलाफ बहुत कम रिपोर्ट हैं। अगर मेरे पास एक अलग मिश्रण था तो मैं इसे एसक्यूएल में करूँगा।

किसी भी तरह से स्वीकार्य है ...

5

मैं सर्वर साइड पर यह परिवर्तित करने से असहमत हैं। यदि आप ऐसा करते हैं तो यह किसी प्रकार के दिनांक के बजाय किसी प्रकार के प्रकार के रूप में वापस आ जाएगा (उदाहरण के लिए यह स्ट्रिंग के रूप में सॉर्ट करेगा)

दिनांकों से निपटने पर मेरा सिद्धांत उन्हें एक तिथि के रूप में टाइप करना है जब तक आप संभवतः कर सकते हैं।

यदि आप रिपोर्ट सर्वर पर प्रदर्शन बाधा का सामना कर रहे हैं तो आपके तर्क से समझौता करने से इसे संभालने के बेहतर तरीके हैं।

+0

मैं इस दृष्टिकोण से सहमत हूं। सर्वर से डेटा प्राप्त करने और सही तरीके से टाइप करने के लिए यह समझ में आता है, फिर यह रिपोर्ट करें कि रिपोर्टिंग परत में इसे कैसे पेश किया जाए। –

0

मैं व्यवहार करने के लिए IsNothing() नहीं मिल सका और मैं और पाया है कि शून्य मान के रूप में प्रदर्शित कर रहे थे (ग्राहकों को प्रति माह दिखाया गया एक डमी आदेश बनाने की दी गई सूची के लिए उदाहरण के लिए) मेरे dataset में डमी पंक्तियाँ बनाने के लिए नहीं करना चाहता था - 247,192।

लो और का उपयोग कर कि उसे दबाने (कम से कम जब तक MSFT 08R2 से बेहतर करने के लिए बदल जाता है SSRS) तो मुझे माफ कर दो के लिए काम किया लेकिन निहारना:

=iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value) 
+0

इस तरह से प्रदर्शित नल के लिए एकमात्र कल्पनीय कारण यह है कि यदि आपके पास कहीं अभिव्यक्ति थी, जो उनके लिए सही ढंग से खाता नहीं था और जब वे हुआ तो विचित्र परिणाम लौटाए, इस मामले में यह आपकी समस्या होगी और माइक्रोसॉफ्ट की नहीं। –

-2

मैं एक ऐसी ही स्थिति थी, लेकिन निम्नलिखित मेरे लिए सबसे अच्छा काम किया ..

=Iif(Fields!Sales_Diff.Value)>1,Fields!Sales_Diff.Value),"") 
6
=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value)) 

इस अभिव्यक्ति का प्रयोग आपको जवाब मिल सकता है।

यहां सीएसआरटी स्ट्रिंग डेटाटाइप को संभालने के लिए एक डिफ़ॉल्ट कार्य है।

0

इस

=IIF(IsNothing(Fields!MyField.Value)=TRUE,"NA",Fields!MyFields.Value) 
संबंधित मुद्दे