2009-03-19 11 views
12

मेरे पास डेटाबेस में एक वैकल्पिक फ़ील्ड है जिसे मैं एक डीएओ रिकॉर्ड सेट का उपयोग कर खींच रहा हूं। मुझे यह जांचने की ज़रूरत है कि फ़ील्ड सेट है या नहीं, इससे पहले कि मैं इसे अन्य क्षेत्रों के साथ जोड़ूं। अब तक मेरे पास निम्न कोड स्निपेट है जिसे मैंने Is और = (यह स्पष्ट रूप से गलत वाक्यविन्यास [[Is | =]]) के साथ कोई फायदा नहीं हुआ है। ऐसा प्रतीत होता है कि यदि मैं = का उपयोग करता हूं तो यह Null के साथ सही ढंग से तुलना नहीं करेगा और यदि मैं Is का उपयोग करता हूं तो यह शिकायत करता है कि यह किसी ऑब्जेक्ट की तुलना नहीं कर रहा है।आप वीबीए डीएओ रिकॉर्ड सेट में नल की जांच कैसे कर सकते हैं?

यदि ऐसा करने का एक आसान तरीका है तो मैं इसके लिए पूरी तरह से खुला हूं। prettyName पैरामीटर के रूप में 3 स्ट्रिंग्स लेता है और शुरुआत में मैं सिर्फ rs.Fields ("MiddleName") को पारित करने की कोशिश कर रहा था लेकिन यह एक शून्य मूल्य पर फेंक दिया। मैं ऐसा कुछ और प्रत्यक्ष करना पसंद करूंगा लेकिन यह सबसे अच्छा है जिसके साथ मैं आ सकता हूं।

उत्तर

27

कैसे के बारे में:

IsNull(rs.Fields("MiddleInitial").Value) 

तुम भी जो पहुँच VBA क्षुधा में अशक्त मूल्यों और उन्हें कैसे संभाल करने के बारे में कुछ स्पष्टीकरण है this article पर एक नज़र हो सकता था।

7

उदाहरण आपको बताएंगे लिए, NZ काम करेगा:

thisMiddleInitial = Nz(rs!MiddleInitial,"") 

या बस एक खाली स्ट्रिंग के साथ स्ट्रिंग श्रृंखलाबद्ध:

thisMiddleInitial = rs!MiddleInitial & "" 
2

आपका प्रश्न Remou से जवाब दिया गया है, मुझे लगता है, लेकिन यह मेरे लिए होता है कि आप सिर्फ नाम फ़ील्ड का उचित संयोजन प्राप्त करने का प्रयास कर रहे हैं। उस स्थिति में, परिणाम प्राप्त करने के लिए आप वीबीए में मिड() और नल प्रचार का उपयोग कर सकते हैं।

मैं, अलग मध्य आद्याक्षर क्षेत्रों का उपयोग नहीं करते तो मेरे सामान्य नाम संयोजन सूत्र है:

Mid(("12" + LastName) & (", " + FirstName), 3) 

"12" शुरुआत में स्ट्रिंग दूर फेंक दिया जा सकता है अगर अंतिम नाम अशक्त और अनदेखा नहीं किया जाता जा रहा है यदि यह शून्य है, क्योंकि + concatenation ऑपरेटर नल का प्रचार करता है।

इस विस्तार करने के लिए मध्य intials शामिल करने के लिए इस प्रकार दिखाई देगा:

Mid(("12" + LastName) & (", " + FirstName) & (" " + MiddleInitial), 3) 

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

+0

चालाक चाल, लेकिन + और ऑपरेटरों के बीच इस अस्पष्ट अंतर पर भरोसा जोखिम भरा, आईएमओ है। अगर कोई बाद में वापस जाता है और कोड को साफ करने का प्रयास करता है, तो वे स्थिरता के लिए सभी + के साथ, या इसके विपरीत, प्रतिस्थापित करने का निर्णय ले सकते हैं, यह समझने के बिना कि यह व्यवहार को बदलता है। –

+0

मैं वास्तव में किसी ऐसे व्यक्ति की संभावना के बारे में बहुत चिंता नहीं करता जो जेट एसक्यूएल के कॉन्सटेनेशन ऑपरेटर की चीजों को गड़बड़ कर मूल बातें समझ में नहीं आता है। वे एक ही उद्देश्य के लिए बनाए गए यूडीएफ को आसानी से गड़बड़ कर सकते थे क्योंकि वे समझ में नहीं आता कि यह कैसे काम करता है। –

+0

सहमत हैं, ऑपरेटर कैसे काम करते हैं यह जानना काफी मौलिक सामान है। – onedaywhen

0

If rst.Fields("MiddleInitial").Value = "Null" Then

यह मेरे लिए काम करता है। मैं एमएस एसक्यूएल डाटाबेस का उपयोग करता हूं।

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

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