2010-09-14 16 views
6

सामान्य कार्यों के तहत SQL सर्वर रिपोर्टिंग सेवा 2008 R2 में अभिव्यक्ति बिल्डर विंडो में -> टेक्स्ट -> आइटम, फ़िल्टर नामक एक अभिव्यक्ति है। यह .NET ढांचे में Strings.Filter method के अनुरूप है। फ़िल्टर का विवरण इस प्रकार है:मल्टी-वैल्यू पैरामीटर्स के साथ स्ट्रिंग.फिल्टर का उपयोग कैसे करें

निर्दिष्ट फ़िल्टर मानदंडों के आधार पर एक स्ट्रिंग सरणी का सबसेट युक्त शून्य-आधारित सरणी देता है।

=Filter(Parameters!MultivalueParameter.Value, "3", True, CompareMethod.Binary) 

उदाहरण और विवरण मतलब है कि आप को देखने के लिए एक बहु मूल्य पैरामीटर निरीक्षण कर सकते हैं यदि चयनित मूल्यों के कम से कम एक मैच पैरामीटर के बराबर है:

उदाहरण इस प्रकार है। मैं इसे # त्रुटि के अलावा कुछ भी वापस करने में सक्षम नहीं हूं, जिसका अर्थ है कि बहु-मान पैरामीटर एक-आयामी सरणी नहीं है। पैरामीटर! MultivalueParameter.Value.GetType()। ToString() सिस्टम देता है। ऑब्जेक्ट []।

क्या कोई यह जानता है कि इसे काम करने के लिए कैसे प्राप्त किया जाए? मैं चारों ओर अगर मान बहु मूल्य पैरामीटर में चयन किया गया था जाँच करने के लिए निम्नलिखित कार्य उपयोग कर रहा हूँ:

=IIF(InStr(" " + JOIN(Parameters!MultivalueParameter.Value, " ") + " ", " 3 ", CompareMethod.Text), false, true) 

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

+1

क्या 'पैरामीटर! MultivalueParameter.Value.GetType()। ToString()' आप देता है? –

+0

महान सवाल। जब मैं आज घर आऊंगा और आपको बता दूं तो मैं इस पर जांच करूंगा। –

+0

यह सिस्टम लौटा। ऑब्जेक्ट []। मैंने इसे प्रश्न में जोड़ा। –

उत्तर

6

समस्या उत्पन्न हो रही है क्योंकि एमएसडीएन से उदाहरण कुछ हद तक इस चर्चा के लिए कमी है। यह सच है कि = फ़िल्टर (पैरामीटर! MultivalueParameter.Value, "3", True, CompMethod.Binary) एक सरणी देता है लेकिन, एसएसआरएस के संदर्भ में, आप केवल एक रिपोर्ट में सरणी आउटपुट नहीं कर सकते हैं। यही कारण है कि आप त्रुटि क्यों देख रहे हैं।

इसके अलावा, एसएसआरएस को फ़िल्टर फ़ंक्शन के दो वैकल्पिक पैरामीटर को संभालने में समस्याएं प्रतीत होती हैं। उनको छोड़ दो और आप जाने के लिए अच्छे होंगे।

आप टेक्स्टबोक में लंबाई आउटपुट को तुरंत आउटपुट करके इसका परीक्षण कर सकते हैं।

=Filter(Parameters!MultivalueParameter.Value, "3").Length 

उपर्युक्त फ़िल्टर किए गए पैरामीटर की पूर्णांक लंबाई के साथ एक टेक्स्टबॉक्स में परिणाम होना चाहिए।

तो, यह सब एक साथ pullling, आप अपने वांछित परिणाम निम्नलिखित के साथ प्राप्त कर सकते हैं:

=IIF(Filter(Parameters!MultivalueParameter.Value, " 3 ").Length > 0, "false", "true") 
+0

मैंने पहली अभिव्यक्ति की कोशिश की और यह एक खाली टेक्स्ट बॉक्स देता है। मैंने दूसरी अभिव्यक्ति की कोशिश की और यह एक खाली टेक्स्ट बॉक्स लौटा। मैंने आपके सुझाव पर भिन्नताओं के साथ प्रयोग करने का प्रयास किया, लेकिन यह या तो रिक्त मान या # त्रुटि लौटा। –

+0

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

+0

एक कदम आगे। पहली अभिव्यक्ति एक खाली लौटती है। दूसरी अभिव्यक्ति झूठी वापसी करती है। मैं इसके बजाय। लेबल का उपयोग करने की कोशिश करने जा रहा हूं। वैल्यू। वैल्यू में 1 से 100 (मोटे तौर पर) के मान होते हैं जबकि। लेबल में अंग्रेजी शब्द होते हैं। मैं अंग्रेजी शब्दों में से किसी एक से मेल खाने के लिए फ़िल्टर में चेक करने के लिए मूल्य बदल दूंगा। –

2

मैं एक tablix में/छिपाने कॉलम दिखाने के लिए SSRS 2008 में एक multivalue पैरामीटर का उपयोग किया।

हालांकि मैं कभी भी वास्तविक सबस्ट्रिंग का लाभ लेने में सक्षम नहीं था, और केवल लंबाई के माध्यम से परिणाम का उपयोग कर सकता था।

=IIF(Filter(Parameters!MultiOption.Value,"3",true).Length>0,"T","F") 

तो (जैसा कि ऊपर दिखाया सही/falsepart नहीं के रूप में तार के साथ) प्रत्येक स्तंभ, (1 2 3 और 4 स्तंभ) मैं इस कोड का प्रयोग करेंगे के लिए।

अन्य प्रयास किया विचार के थे:

=Filter(Parameters!MultiOption.Value,"3",true).GetValue(0).ToString 

कौन कर सकते हैं उत्पादन 3, हालांकि एक झूठी हालत में, getValue (0) सीमा से बाहर है।

=IIF((Filter(Parameters!MultiOption.Value,"3",true).Length>0), 
Filter(Parameters!MultiOption.Value,"3",true).GetValue(0).ToString, 
"",) 

यदि कोई मौजूद है तो प्रभावी रूप से केवल सबस्ट्रिंग मान को वापस कर देना चाहिए। हालांकि यह ऐसा काम नहीं करता था।

डलास

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