2010-06-30 12 views
9

के साथ एसएसआरएस फ़ंक्शन मैं स्ट्रिंग मान के रूप में अपने डेटाबेस में किसी फ़ोन नंबर फ़ील्ड के लिए एसएसआरएस का उपयोग करके एक रिपोर्ट बना रहा हूं। मुझे फोन नंबर प्रारूप (555) 555-1212 में स्ट्रिंग मान को प्रारूपित करने की आवश्यकता है। यदि मान शून्य है, तो कुछ भी प्रदर्शित नहीं करें।रेगेक्स

उदाहरण के लिए, मेरे डेटाबेस में एक तालिका में एक फोन नंबर कॉलम है और कुछ मान न्यूल हैं।

मुझे एक रेगेक्स मिला जो फोन नंबर को ठीक करता है।

= System.Text.RegularExpressions.Regex.Replace (फील्ड्स Phone.Value, "(\ घ {3})! [-।] (\ घ {3}) [-]। (\ घ {4}) "," ($ 1) $ 2 $ 3 ")

लेकिन अगर मैं यह कर:

= IIf (फील्ड्स Phone.Value कुछ भी नहीं है," ", सिस्टम .Text.RegularExpressions.Regex.Replace (फ़ील्ड्स! फोन। वैल्यू, "(\ डी {3}) [ -।] (\ d {3}) [-।] (\ d {4})", "($ 1) $ 2- $ 3"))

फिर यह एक त्रुटि के साथ आता है। #ERROR मेरी रिपोर्ट पर प्रदर्शित होता है। क्या आप reifx के साथ आईआईएफ का उपयोग कर सकते हैं? क्या कोई और तरीका है?

उत्तर

12

(मुझे लगता है कि आप केवल अपने शून्य मूल्यवान रिकॉर्ड के लिए #ERROR प्राप्त कर रहे हैं, क्योंकि यह तब हुआ जब मैंने आपके द्वारा प्रदत्त अभिव्यक्ति का उपयोग करके एक परीक्षण केस स्थापित किया। यदि नहीं, तो मैं आगे की जांच करूंगा।)

आप निश्चित रूप से IIF() कथन के अंदर एक रेगेक्स का उपयोग कर सकते हैं, लेकिन यह आपकी परीक्षण अभिव्यक्ति के परिणाम के बावजूद evaluates both result conditions है। इसलिए, आपके Regex.replace() आपके NULL मानों पर भी प्रदर्शन किया जाता है, जो स्वाभाविक रूप से एक त्रुटि उत्पन्न करता है।

मैं चीजों को एक छोटे से उलटफेर करके व्यवहार मुझे लगता है कि निर्माण करने के लिए है कि आप के बाद कर रहे हैं पा रहा था, इसलिए है कि हम इस अभिव्यक्ति के बजाय है (पठनीयता के लिए प्रारूपित):

=System.Text.RegularExpressions.Regex.Replace(
    IIf(IsNothing(Fields!Phone.Value), "", Fields!Phone.Value), 
    "(\d{3})[ -.](\d{3})[ -.](\d{4})", 
    "($1) $2-$3") 

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

+1

धन्यवाद, यह काम करता है। मुझे केवल रेगेक्स को थोड़ा सा प्रारूपित करने की आवश्यकता थी। = System.Text.RegularExpressions.Regex.Replace (IIF (IsNothing (फ़ील्ड्स! फोन.वैल्यू), "", फ़ील्ड! फोन। वैल्यू), "(\ d {3}) [-।] * (\ D {3 }) [-।] * (\ डी {4}) "," ($ 1) $ 2- $ 3 ") – JacksOrBetter99