परिचय।
पिछले कुछ हफ्तों में हमने सीखा है कि जटिल डेटा संरचना बनाकर उपयोगकर्ता-परिभाषित प्रकार (यूडीटी) का उपयोग कैसे किया जाता है और हम अब तक यूडीटी की ताकत या कमजोरी को कमोबेश जानते हैं। यदि आपने उन लेखों को नहीं पढ़ा है तो आप उन पर जा सकते हैं। निम्नलिखित लिंक का प्रयोग करें:
- उपयोगकर्ता-निर्धारित डेटा प्रकार-2
- उपयोगकर्ता-निर्धारित डेटा प्रकार-3
Microsoft Access में, दो प्रकार के VBA मॉड्यूल हैं।
- मानक मॉड्यूल
- कक्षा मॉड्यूल
हमने क्लास मॉड्यूल के साथ फॉर्म . पर काम किया है और रिपोर्ट माइक्रोसॉफ्ट एक्सेस की। फॉर्म/रिपोर्ट क्लास मॉड्यूल प्रोग्राम ज्यादातर इवेंट-संचालित होते हैं (बटन-क्लिक, पहले-अपडेट, फॉर्म/रिपोर्ट करेंट इवेंट, और इसी तरह) छोटे रूटीन।
मानक मॉड्यूल में अधिक गंभीर डेटा प्रोसेसिंग प्रोग्राम लिखे जाएंगे। अलग-अलग कार्यों को करने के लिए कई प्रोग्राम, जरूरी नहीं कि संबंधित हों, एक मानक मॉड्यूल में लिखे जा सकते हैं।
कक्षा मॉड्यूल अलग हैं। उनका उपयोग कस्टम ऑब्जेक्ट बनाने के लिए किया जाता है और एक क्लास मॉड्यूल का उपयोग केवल एक ऑब्जेक्ट के लिए किया जाता है।
स्टैंड-अलोन क्लास मॉड्यूल की मूल बातें।
आइए शुरुआत से एक साधारण क्लास मॉड्यूल बनाएं और मूल बातें सीखें।
- Microsoft Access प्रारंभ करें और एक डेटाबेस खोलें या एक नया बनाएँ। यदि यह एक नया डेटाबेस है तो इसे मौजूदा विश्वसनीय स्थान (फ़ोल्डर) में सहेजें या विश्वसनीय स्थान सूची में नया स्थान जोड़ें। ऑफिस बटन -> एक्सेस विकल्प-> ट्रस्ट सेंटर -> ट्रस्ट सेंटर सेटिंग्स पर क्लिक करें। सूची में डेटाबेस फ़ोल्डर जोड़ें और ठीक क्लिक करें।
- VBA संपादन विंडो खोलें (Alt+F11)।
- सम्मिलित करें पर क्लिक करें मेनू और कक्षा मॉड्यूल का चयन करें सूची से। एक नया क्लास मॉड्यूल डाला गया है।
नोट: कक्षा का नाम:ClsArea वस्तु का नाम बनें। इसका मतलब है कि, जहां भी हम इस ऑब्जेक्ट का उपयोग करते हैं, यह एक सामान्य चर घोषणा की तरह होगा:Dim xyz As ClsArea . हमने उपयोगकर्ता-परिभाषित डेटा प्रकार घोषणाओं के लिए एक समान विवरण लिखा था।
इसके बाद, हम वस्तु के तीन गुण (चर) जोड़ेंगे (विवरण, लंबाई, के लिए) और चौड़ाई ) मॉड्यूल के शीर्ष पर, विकल्प तुलना डेटाबेस . के नीचे और स्पष्ट विकल्प लाइनें। क्लास मॉड्यूल में निम्न पंक्तियाँ टाइप करें।
विकल्प डेटाबेस की तुलना करें।इन चरों की पहचान VBA कस्टम क्लास ऑब्जेक्ट के गुण के रूप में की जाती है। कक्षा मॉड्यूल सहेजें।
नोट: हमारे क्लास मॉड्यूल ऑब्जेक्ट और कोड की लाइनें इतनी आसान नहीं होंगी। यह कोड की कई पंक्तियों के साथ परिवर्तन से गुजरेगा। परिवर्तनों के प्रत्येक चरण का ट्रैक खोए बिना, चरण दर चरण उनका अनुसरण करने के लिए बेहतर तैयार रहें। यह एक साधारण क्षेत्र-गणना वर्ग है (क्षेत्र =लंबाई * चौड़ाई ), यह सरल है। इसमें धीरे-धीरे बदलाव आएंगे जिससे आपको पता चलेगा कि ये बदलाव क्यों जरूरी हो गए हैं।
हम अपने नए क्लास मॉड्यूल का परीक्षण करने के लिए एक मानक मॉड्यूल में एक छोटा प्रोग्राम लिखेंगे। सम्मिलित करें मेनू से एक मानक मॉड्यूल डालें। आप मॉड्यूल में मौजूदा लाइन को अधिलेखित करते हुए मानक मॉड्यूल में निम्नलिखित कोड टाइप या कॉपी और पेस्ट कर सकते हैं:
विकल्प तुलना DatabaseOption स्पष्ट सार्वजनिक कार्य ClassTest1()Dim oArea as ClsAreaSet oArea =New ClsAreaoArea.Set oArea =कुछ भी नहीं फंक्शनमंद स्टेटमेंट एक वैरिएबल की घोषणा करता है जैसा कि हम एक सामान्य वैरिएबल के लिए करते हैं, जैसे कि डिम डिस्क को स्ट्रिंग के रूप में। लेकिन, यह कोई सामान्य चर नहीं है जिसे हम अपने क्लास मॉड्यूल ऑब्जेक्ट ClsArea के लिए एक संदर्भ सेट कर रहे हैं . चूंकि यह एक वस्तु है, इसलिए केवल एक साधारण आयाम विवरण पर्याप्त नहीं है क्योंकि यह हमारे स्थानीय रूप से परिभाषित ऑब्जेक्ट oArea में मूल्यों को संग्रहीत करने के लिए कोई स्मृति स्थान आवंटित नहीं करेगा। गुण।
सेट नया . के साथ अगली पंक्ति में कथन ClsArea . से किसी ऑब्जेक्ट का उदाहरण बनाने के लिए कीवर्ड की आवश्यकता है स्मृति में, ऑब्जेक्ट इंस्टेंस नाम oArea . के साथ . यदि आवश्यक हो तो हम स्मृति में एक ही क्लास ऑब्जेक्ट के कई उदाहरण खोल सकते हैं, (आने वाले हफ्तों में हम उनके बारे में जानेंगे) ताकि हम मूल्यों को इसके गुणों (p_Desc, p_Length, p_Width) में संग्रहीत कर सकें। p_ वेरिएबल्स का उपसर्ग एक संकेतक है कि वेरिएबल्स का दायरा निजी है, यानी वेरिएबल्स क्लास मॉड्यूल के बाहर दिखाई नहीं दे रहे हैं यदि वैरिएबल को निजी कीवर्ड के साथ घोषित किया गया है, लेकिन अब इसे सार्वजनिक घोषित किया गया है। चर नाम कोई भी मान्य नाम हो सकता है।
नोट: हमने इसे अभी तक निजी घोषित नहीं किया है। हम उस बदलाव की ओर बढ़ रहे हैं।
कीवर्ड के तुरंत बाद सेट करें स्थानीय वस्तु का नाम (आप अपनी पसंद का उपयुक्त नाम चुन सकते हैं लेकिन यह सामान्य चर नाम नियमों के अनुरूप होना चाहिए) उसके बाद एक समान चिह्न और कीवर्ड नया और क्लास मॉड्यूल का नाम (ClsArea) स्मृति में clsArea ऑब्जेक्ट का एक उदाहरण बनाने के लिए इसके सभी गुणों (चर) के साथ।
इस दो-लाइन कोड के लिए एक शॉर्टकट है। कोड की इन दोनों पंक्तियों की क्रियाओं को एक कथन के साथ प्राप्त किया जा सकता है जैसा कि नीचे दिखाया गया है:
डिम oArea as ClsAreaSet oArea =नया ClsArea'उपरोक्त दो कथनों का शॉर्टकटडिम oArea As New ClsAreaजब आप अगली पंक्ति oArea type टाइप करते हैं उसके बाद एक बिंदु (. ) विभाजक से चयन करने के लिए उपलब्ध कस्टम ऑब्जेक्ट गुणों की सूची दिखाने के लिए निम्न प्रदर्शन दिखाई देगा।
यदि यह प्रकट नहीं होता है, तो टूल मेनू बॉक्स से विकल्प संवाद पर जाएं और संपादक टैब में सदस्यों की ऑटो सूची में एक चेकमार्क लगाएं।
फंक्शन से बाहर निकलने से पहले अंतिम स्टेटमेंट सेट oArea =कुछ भी नहीं होना चाहिए . यह कथन स्पष्ट रूप से कस्टम ऑब्जेक्ट के उदाहरण द्वारा कब्जा की गई मेमोरी को रिलीज़ करता है, ताकि अन्य प्रोग्राम के लिए अधिक मेमोरी उपलब्ध हो। यह हमारे कार्यक्रम द्वारा एक जिम्मेदार सफाई अभियान है।
तत्काल कस्टम ऑब्जेक्ट के साथ हम जो कुछ भी करते हैं, उसे पहले और अंतिम सेट . के बीच कोडित किया जाना चाहिए बयान।
ClsArea क्लास ऑब्जेक्ट टेस्ट प्रोग्राम।
पूरा क्लास टेस्टिंग प्रोग्राम कोड नीचे दिया गया है:
विकल्प डेटाबेस तुलना करें। oArea.p_Desc, oArea.p_Length, oArea.p_WidthSet oArea =कुछ भी नहीं फ़ंक्शनकोड के बीच में कहीं क्लिक करें और F5 press दबाएं कार्यक्रम चलाने के लिए। कार्यक्रम का संचालन संदर्भ के लिए नीचे दिया गया है।
विवरण लंबाई चौड़ाईकालीन 25 15सार्वजनिक|वस्तु गुणों का निजी क्षेत्र।
हमारे साधारण क्लास मॉड्यूल ऑब्जेक्ट में कुछ कमियां हैं और हम उन्हें सुधारने जा रहे हैं।
पहला यह है कि हमने सार्वजनिक . के साथ सभी चर (या गुण) घोषित कर दिए हैं दायरा। इस वजह से वे अन्य वीबीए कार्यक्रमों के लिए दृश्यमान हैं और उनका मूल्य सीधे बदल सकता है। दूसरा मुद्दा यह है कि यह किसी भी अमान्य मान को स्वीकार करेगा, जैसे कि नकारात्मक या शून्य मान, जो हमारे क्लास ऑब्जेक्ट के लिए उपयुक्त नहीं है। वेरिएबल में मानों को स्वीकार करने से पहले हमें कुछ सत्यापन जांचों को शामिल करना होगा।
पहली समस्या जिसे हम परिवर्तनशील घोषणाओं को सार्वजनिक से निजी . में बदलकर आसानी से हल कर सकते हैं . जब हम ऐसा करते हैं तो हमारे पास निजी चर से मूल्यों को संग्रहीत और पुनर्प्राप्त करने के लिए कुछ अप्रत्यक्ष विधि होनी चाहिए। प्राप्त करें . का यही उद्देश्य है और चलो संपत्ति प्रक्रिया, वस्तु की प्रत्येक संपत्ति के लिए। आइए इन परिवर्तनों को कक्षा मॉड्यूल में करें।
क्लास मॉड्यूल ClsArea खोलें। तीनों चरों के लिए सार्वजनिक शब्द को निजी में बदलें।
संपत्ति प्रक्रियाएं बनाना
प्रक्रिया Select चुनें सम्मिलित करें . से मेनू, टाइप करें strDesc नाम . में पाठ नियंत्रण, संपत्ति select चुनें प्रकार . में विकल्प समूह और सार्वजनिक दायरे . में विकल्प समूह। निजी p_Desc . के लिए संपत्ति प्रक्रियाएं सम्मिलित करने के लिए ठीक क्लिक करें परिवर्तनीय (संपत्ति)।
विकल्प डेटाबेस की तुलना करें। p_DescEnd प्रॉपर्टीदोनों प्राप्त करें प्रक्रिया और चलो प्रक्रिया को सार्वजनिक . के रूप में घोषित किया गया है . दोनों प्रक्रिया नाम समान हैं strDesc. डिफ़ॉल्ट रूप से, लौटा गया डेटा प्रकार वेरिएंट है प्राप्त करें . में प्रक्रिया और पैरामीटर डेटा प्रकार को चलो . में भिन्न के रूप में भी सम्मिलित किया गया है प्रक्रिया। इन्हें हम आवश्यकतानुसार विशिष्ट प्रकारों में बदल सकते हैं, जो हमने किया और स्ट्रिंग . में बदल दिया प्रकार। पहले तीन अक्षर str strDesc . में उपयोगकर्ता को संकेत देता है कि संपत्ति एक स्ट्रिंग डेटा प्रकार मान की अपेक्षा करती है। बदलें चलो संपत्ति प्रक्रिया पैरामीटर चर नाम vNewValue करने के लिए strNewValue
जब हम संपत्ति प्रक्रिया सम्मिलित करते हैं तो उन्हें हमेशा प्राप्त करें . के साथ सम्मिलित किया जाता है और चलो एक चर के लिए प्रक्रिया जोड़े।
अब, प्राप्त करें . के भीतर हमारे द्वारा लिखे गए व्यंजक को ध्यान से देखें प्रक्रिया। = . के बाईं ओर प्रक्रिया प्राप्त करने के नाम पर हस्ताक्षर करें strDesc निजी चर से कॉपी किए गए मान को वापस करने के लिए एक चर के रूप में कार्य करता है p_Desc कॉलिंग प्रोग्राम के लिए।
चलो प्रक्रिया strDesc पैरामीटर वैरिएबल में स्ट्रिंग मान स्वीकार करता है strNewValue . इनपुट मान हमारे निजी चर p_Desc. . में स्थानांतरित किया जाता है
यहां ध्यान देने वाली बात यह है कि हमारे निजी चर p_Desc की बाहरी दुनिया तक कोई सीधी पहुंच नहीं है। मूल्यों का परिवहन से/से चर (संपत्ति) p_Desc हमेशा प्राप्त करें/चलो . के माध्यम से रूट किया जाता है केवल संपत्ति प्रक्रियाएं और सत्यापन जांच के अधीन हैं (अभी तक लागू नहीं किया गया), हम बाद में संपत्ति में मूल्य इनपुट (लेट प्रक्रिया) पर सत्यापन जांच शुरू करेंगे।
प्राप्त करें/चलो हम VBA प्रोग्राम्स में एक एक्सप्रेशन में ऑब्जेक्ट प्रॉपर्टी के साथ क्या करते हैं, इसके आधार पर प्रक्रियाओं को स्वचालित रूप से निष्पादित किया जाता है।
प्राप्त करें प्रक्रिया निष्पादित की जाती है जब हम संपत्ति के नाम को निम्नलिखित तरीके से अभिव्यक्ति में उपयोग करते हैं:
' p_Desc से PrintDebug तक मान पढ़ता है। प्रिंट oArea.strDescOR' p_Desc से मान पढ़ता है और इसे वेरिएबल XX =oArea.strDescको असाइन करता है।चलो संपत्ति प्रक्रिया तब चलती है जब हम संपत्ति के नाम में एक मान निर्दिष्ट करने का प्रयास करते हैं। नीचे दिए गए हमारे परीक्षण कार्यक्रम में उदाहरण अभिव्यक्ति की जाँच करें:
oArea.strDesc ="कालीन"पहले की BASIC भाषा की पुस्तकों में आप LET कीवर्ड का उपयोग देख सकते हैं।
LET X =25 ' LET वैकल्पिक हैचूंकि यह वैकल्पिक था, इसलिए स्टेटमेंट इसके बिना काम करता है और इसका इस्तेमाल बिल्कुल भी बंद कर देता है।
यहां, यदि आप केवल पढ़ रहे हैं एक चर से कुछ मूल्य और सीधे इसमें कुछ भी संग्रहीत नहीं करते हैं तो आप चलो प्रक्रिया को छोड़ सकते हैं और केवल प्राप्त करें का उपयोग कर सकते हैं प्रक्रिया।
यह नियम लेट प्रक्रिया पर भी लागू होता है। आप केवल चलो . का उपयोग कर सकते हैं प्रक्रिया, यदि आप असाइन कर रहे हैं एक निजी चर में कुछ मूल्य लेकिन एक ही चर से वापस कुछ भी नहीं पढ़ रहा है तो प्रक्रिया प्राप्त करें को छोड़ दें।
प्राप्त करें और चलो यदि हमारी अभिव्यक्ति कुछ इस तरह है तो प्रक्रियाएं एक के बाद एक चलेंगी:
oArea.strDesc =oArea.strDesc &“- किंग साइज।”उपरोक्त अभिव्यक्ति में, हम प्राप्त करें निजी चर से मौजूदा मान p_Desc और विवरण को संशोधित करें और इसे वापस उसी चर में संग्रहीत करें। संक्षेप में अभिव्यक्ति . में यदि आप समान चिह्न के दाईं ओर संपत्ति के नाम का उपयोग करते हैं (= ) प्राप्त करें प्रक्रिया कहलाती है और चलो प्रक्रिया तब चलती है जब ऑब्जेक्ट गुण प्रक्रिया नाम बराबर के बाईं ओर दिखाई देता है (= ) साइन करें।
चर के लिए संपत्ति प्रक्रियाओं के दो सेट डालें p_Length और p_Width. जब आप नाम . में प्रक्रिया नाम देते हैं नियंत्रण नाम दें dblLength और dblWidth उपयोगकर्ता को यह संकेत देने के लिए कि ये गुण इनपुट के रूप में डबल प्रेसिजन नंबरों की अपेक्षा करते हैं।
ClsArea Class Object अपनी संपत्ति प्रक्रियाओं के साथ।
dblLength और dblWidth संपत्ति प्रक्रियाओं के साथ अब तक पूरा कोड संदर्भ के लिए और आपके कोड को अपडेट करने के लिए नीचे दिया गया है।
विकल्प तुलना डेटाबेसऑप्शन एक्सप्लिसिटप्राइवेट p_Desc स्ट्रिंग के रूप मेंप्राइवेट p_Length डबलप्राइवेट के रूप में p_Width डबलपब्लिक प्रॉपर्टी के रूप में strDesc() स्ट्रिंग के रूप में प्राप्त करें strDesc =p_Desc 'p_DescEnd प्रॉपर्टी से मान की प्रतिलिपि बनाएँ। ) डबल dblLength =p_LengthEnd प्रॉपर्टी के रूप में सार्वजनिक संपत्ति dblLength (ByVal dblNewValue डबल के रूप में) देंपरिवर्तन के साथ परीक्षण कार्यक्रम।
यदि आप उपरोक्त कोड को पूरा कर रहे हैं तो आइए हम अपने परीक्षण कार्यक्रम में परिवर्तन करें, ताकि हम यहां किए गए परिवर्तनों को प्रतिबिंबित कर सकें। संशोधित नमूना कोड नीचे दिया गया है।
विकल्प तुलना DatabaseOption स्पष्ट सार्वजनिक समारोह ClassTest1()Dim oArea as ClsAreaSet oArea =New ClsArea'Property Let प्रक्रियाओं को यहाँ कहा जाता है। "चौड़ाई"'प्रॉपर्टी प्राप्त करने की प्रक्रिया को यहां प्रिंट करने के लिए बुलाया गया है।जब आप ऑब्जेक्ट नाम oArea (oArea.) के तुरंत बाद एक बिंदु (.) दर्ज करते हैं, तो संपत्ति प्रक्रिया नामों की सूची VBA IntelliSense द्वारा प्रदर्शित की जाती है और आप सूची में से आवश्यक एक को मैन्युअल रूप से टाइप किए बिना चुन सकते हैं।
इस क्लास ऑब्जेक्ट का उद्देश्य किसी चीज़ के क्षेत्रफल की गणना करना है, जैसे कमरे का क्षेत्रफल, कालीन, फर्श की टाइल, या ऐसी कोई भी सामग्री, जिसमें लंबाई और चौड़ाई के मान हों। इसका मतलब है कि क्लास ऑब्जेक्ट में दर्ज की गई किसी भी वस्तु की लंबाई, चौड़ाई और विवरण मानों के क्षेत्रफल की गणना करने के लिए हमें एक सार्वजनिक फ़ंक्शन की आवश्यकता है।
ClsArea ऑब्जेक्ट विधि:क्षेत्र()
यहाँ सार्वजनिक समारोह के लिए कोड है:
पब्लिक फंक्शन एरिया () डबल एरिया के रूप में =Me.dblLength * Me.dblWidthEnd फंक्शनआप इस फ़ंक्शन को सम्मिलित करें . से सम्मिलित कर सकते हैं क्षेत्र . दर्ज करके मेनू नाम . में फ़ंक्शन . का चयन करते हुए नियंत्रण करें प्रकार . से विकल्प समूह, और सार्वजनिक स्कोप . के रूप में ClsArea क्लास मॉड्यूल में। बीच में लाइन डालकर फंक्शन को पूरा करें।
हम सीधे p_Length और p_Width वैरिएबल को संबोधित कर सकते हैं (क्योंकि फ़ंक्शन Area() वर्ग मॉड्यूल का हिस्सा है) क्षेत्र की गणना के लिए अभिव्यक्ति में। लेकिन, हम उचित मार्ग ले रहे हैं और गणना के लिए प्रक्रियाओं को dblLength और dblWidth कहते हैं। हो सकता है कि आपने मैं. . के संदर्भ पर ध्यान दिया हो dblLength को अर्हता प्राप्त करने के लिए उपयोग किया जाता है, dblWidth प्रक्रिया प्राप्त करें, जैसे हम फॉर्म/रिपोर्ट क्लास मॉड्यूल में लिखते थे, स्मृति और उसके गुणों में वर्तमान ऑब्जेक्ट को संदर्भित करने के लिए। जैसा कि मैंने पहले कहा था कि हमारे कस्टम क्लास ऑब्जेक्ट में एक ही समय में मेमोरी में कई ऑब्जेक्ट इंस्टेंस खोले जा सकते हैं और Me कीवर्ड वर्तमान उदाहरण को संदर्भित करता है जो फ़ंक्शन क्षेत्र () से संबंधित है।
संशोधन के साथ परीक्षण कार्य।
एरिया () फंक्शन आउटपुट को शामिल करने के लिए हमारे टेस्ट फंक्शन ClassTest1() को संशोधित करें:
विकल्प तुलना DatabaseOption स्पष्ट सार्वजनिक समारोह ClassTest1()Dim oArea as ClsAreaSet oArea =New ClsAreaoArea.strDesc ="कालीन" oArea.dblLength =25oArea.dblWidth =15Debug.प्रिंट "विवरण", "लंबाई", "चौड़ाई", "क्षेत्र "डीबग.प्रिंट oArea.strDesc, oArea.dblLength, oArea.dblWidth, oArea.AreaSet oArea =कुछ भी नहीं फ़ंक्शनपरिवर्तन केवल डीबग में है। विवरण प्रिंट करें। कोड चलाएँ और परिणाम के लिए डीबग विंडो देखें।
कस्टम क्लास मॉड्यूल में दो ईवेंट प्रक्रियाएं आवश्यक हैं:Class_Initialize() और Class_Terminate() .
स्वतः निष्पादन के तरीके।
Class_Initialize() जब हम किसी ऑब्जेक्ट को नया कुंजी शब्द। इस प्रोग्राम का उपयोग डिफॉल्ट वैल्यू को वेरिएबल में सेट करने या मेमोरी में अन्य ऑब्जेक्ट्स को इंस्टेंट करने के लिए किया जा सकता है। एक क्लास ऑब्जेक्ट अन्य क्लासेस को चाइल्ड ऑब्जेक्ट के रूप में उपयोग कर सकता है और इसे तत्काल करने की आवश्यकता है। इस पहलू को हम और अधिक एक्सप्लोर करेंगे और बाद में इसे करना सीखेंगे।
Class_Terminate() प्रोग्राम तब चलता है जब हम किसी वस्तु को स्मृति से मिटाने का प्रयास करते हैं जब कुछ नहीं कीवर्ड स्टेटमेंट में चलाया जाता है सेट oArea =कुछ नहीं . जब क्लास ऑब्जेक्ट का उपयोग करने वाला प्रोग्राम समाप्त होता है, तो मेमोरी में ऑब्जेक्ट का इंस्टेंस डिफ़ॉल्ट रूप से हटा दिया जाता है। लेकिन यह एक अच्छा प्रोग्रामिंग अभ्यास है जिसका हम उपयोग करते हैं सेट oArea =कुछ नहीं स्मृति से ऑब्जेक्ट को साफ़ करने के लिए हमारे प्रोग्राम में अंतिम निष्पादन योग्य कथन के रूप में कथन।
हम उपरोक्त कार्यक्रमों को अपने क्लास मॉड्यूल में जोड़ेंगे। अपने कक्षा मॉड्यूल के अंत में निम्नलिखित कोड जोड़ें:
निजी सब क्लास_इनिशियलाइज़ () p_Length =0 p_Width =0 'MsgBox "इनिशियलाइज़।", vbInformation, "Class_Initialize ()" एंड सब-प्राइवेट सब क्लास_टर्मिनेट () 'MsgBox "टर्मिनेट।", vbInformation, "Class_Terminate ()" एंड सबयदि आप इन दो उप-नियमों का परीक्षण करना चाहते हैं तो टिप्पणी चिह्न को हटा दें और MsgBox को सक्रिय करें। अपना परीक्षण कार्यक्रम एक बार और चलाएँ। आपको आरंभ करें . मिलेगा संदेश शुरुआत में दिखाई देता है (जारी रखने के लिए ठीक क्लिक करें) और समाप्त करें संदेश परीक्षण कार्यक्रम के अंत में प्रकट होता है।
मुझे पता है कि आप अब तक क्या सोच रहे हैं, जैसे "दो चर को एक साथ गुणा करने के लिए इतना कोड"। उस परिप्रेक्ष्य में यह सच है, लेकिन यह बहुत संभव है कि हमने समान समस्या-समाधान के मुद्दों के लिए हर बार बार-बार कोड लिखा हो, सत्यापन जांच के लिए डुप्लिकेट कोड और अन्य तार्किक त्रुटि सुरक्षा उपायों के लिए कोड लिखा हो।
यहां, हम एक साधारण प्रोग्राम नहीं लिख रहे हैं बल्कि एक कस्टम ऑब्जेक्ट विकसित कर रहे हैं जिसका उपयोग कई बार किया जा सकता है या अन्य ऑब्जेक्ट्स का हिस्सा हो सकता है, जहां भी हमें इसकी आवश्यकता होती है, यह चिंता किए बिना कि यह कैसे काम करता है, उपयोगकर्ता के दृष्टिकोण से। माइक्रोसॉफ्ट एक्सेस में कई बिल्ट-इन ऑब्जेक्ट्स/फ़ंक्शन हैं जिनका उपयोग हम हर समय इस बात की चिंता किए बिना करते हैं कि यह कैसे काम करता है, उनके गुण या पैरामीटर सेट करके और काम पूरा कर लेते हैं।
हमारे पास ध्यान रखने के लिए एक और मुद्दा है, dblNewValue में इनपुट मानों पर सत्यापन जांच चलो . में पैरामीटर dblLength() . की संपत्ति प्रक्रियाएं और dblWidth(), यह सुनिश्चित करने के लिए ऑब्जेक्ट प्रॉपर्टी को मान्य मान असाइन किए गए हैं p_Length और p_Width .
दर्ज किए गए नकारात्मक या शून्य मान अमान्य माने जाते हैं और हमें यह देखने के लिए सावधानी बरतनी होगी कि उपयोगकर्ता द्वारा सही मान दर्ज किया गया है।
सत्यापन जांच करना।
संशोधित चलो संपत्ति प्रक्रिया कोड खंड नीचे दिए गए हैं। अपने कोड में तदनुसार परिवर्तन करें।
सार्वजनिक संपत्ति चलो dblLength(ByVal dblNewValue डबल के रूप में) जबकि dblNewValue <=0 dblNewValue =इनपुटबॉक्स ("नकारात्मक/0 मान अमान्य:", "dblLength ()", 0) चौड़ाई लूप p_Length =dblNewValueEnd संपत्ति सार्वजनिक संपत्ति dblNewValue डबल के रूप में) करें जबकि dblNewValue <=0 dblNewValue =InputBox ("नकारात्मक/0 मान अमान्य:", "dblwidth ()", 0) लूप p_Width =dblNewValueEnd प्रॉपर्टीजबकि करें। . . लूप dblNewValue . में एक मान्य मान (0 से अधिक) दर्ज होने तक बार-बार चलता है उपयोगकर्ता द्वारा
सार्वजनिक तरीके से सत्यापन जांच:क्षेत्र ()
हमें क्षेत्र() . में एक और सत्यापन जांच की आवश्यकता है समारोह। यदि उपयोगकर्ता पहले लंबाई और चौड़ाई के लिए मान्य मान दर्ज किए बिना क्षेत्र () फ़ंक्शन को कॉल करता है, तो उपयोगकर्ता को इसके बारे में सूचित किया जाना चाहिए। क्षेत्र गणना के लिए व्यंजक चलाने से पहले हम जाँचेंगे कि क्या p_Length और p_Width चरों के वैध मान हैं। यहाँ कोड है:
पब्लिक फंक्शन एरिया() डबल के रूप में अगर (Me.dblLength> 0) और (Me.dblWidth> 0) तो एरिया =Me.dblLength * Me.dblWidth Else Area =0 MsgBox "त्रुटि:लंबाई/चौड़ाई मान (मानों) ) अमान्य।, कार्यक्रम निरस्त।" एंड इफएंड फंक्शनClsArea ऑब्जेक्ट का पूरा कोड।
हमारे क्लास मॉड्यूल ClsArea का पूरी तरह से पूरा कोड नीचे दिया गया है:
विकल्प तुलना डेटाबेसऑप्शन एक्सप्लिसिटप्राइवेट p_Desc स्ट्रिंग के रूप मेंप्राइवेट p_Length डबलप्राइवेट के रूप में p_Width डबलपब्लिक प्रॉपर्टी के रूप में strDesc() स्ट्रिंग के रूप में प्राप्त करें strDesc =p_Desc 'p_DescEnd प्रॉपर्टी से मान की प्रतिलिपि बनाएँ। ) डबल dblLength =p_LengthEnd प्रॉपर्टी के रूप में सार्वजनिक संपत्ति dblLength (ByVal dblNewValue डबल के रूप में) करते हैं, जबकि dblNewValue <=0 dblNewValue =इनपुटबॉक्स ("नकारात्मक / 0 मान अमान्य:", "PublicLength ()", 0) लूप p_NewLength संपत्ति प्राप्त करें =0) लूप p_Length संपत्ति प्राप्त करें dblWidth() डबल dblWidth =p_WidthEnd प्रॉपर्टी के रूप में सार्वजनिक संपत्ति dblWidth (ByVal dblNewValue डबल के रूप में) करते हैं जबकि dblNewValue <=0 dblNewValue =इनपुटबॉक्स ("नकारात्मक/0 मान अमान्य:", "dblwidth ()", 0) लूप p_Width =प्रॉपर्टी dblNewValueEnd फंक्शन एरिया() डबल के रूप में अगर (Me.dblLength> 0) और (Me.dblWidth> 0) तो एरिया =Me.dblLength * Me.dblWidth अन्य क्षेत्र =0 MsgBox "त्रुटि:लंबाई/चौड़ाई मान (मानों) अमान्य।, कार्यक्रम निरस्त किया गया।" एंड इफएंड फंक्शनप्राइवेट सब क्लास_इनिशियलाइज़ () p_Length =0 p_Width =0 'MsgBox "इनिशियलाइज़।", vbInformation, "Class_Initialize ()" एंड सब-प्राइवेट सब क्लास_टर्मिनेट () 'MsgBox "टर्मिनेट।", vbInformation, "Class_Terminate ()" एंड सबसंपत्ति प्रक्रियाओं और विधियों का परीक्षण करना।
आप dblLength, dblWidth गुणों के इनपुट के रूप में नकारात्मक या 0 मान दर्ज करके हमारे कस्टम क्लास ऑब्जेक्ट का परीक्षण कर सकते हैं।
परीक्षण कार्यक्रम में क्षेत्र () फ़ंक्शन का परीक्षण करने के लिए लाइनों (oArea.dblLength=25 और oArea.dblWidth=15) पर टिप्पणी करें। यह त्रुटि संदेश प्रदर्शित करना चाहिए जो हमने फ़ंक्शन के भीतर लिखा है।
हमारा क्षेत्र गणना वर्ग मॉड्यूल अब पूर्ण माना जाता है और हमने परीक्षण किया है और पाया है कि यह सही ढंग से काम कर रहा है। आप किसी भी तार्किक त्रुटि के लिए इसका परीक्षण कर सकते हैं जिसे मैंने अनदेखा कर दिया है। अगर आपको कुछ ऐसा मिलता है जिसकी मुझे उम्मीद नहीं थी, तो कृपया उसे मेरे साथ साझा करें।
परीक्षण के लिए भविष्य की योजना।
हमने केवल एक आइटम के लिए क्लास ऑब्जेक्ट का परीक्षण किया है। हमें कई वस्तुओं के क्षेत्रफल की गणना करने की आवश्यकता है (जैसे 5 बिस्तर-कमरों या 10 विभिन्न आकार के कालीनों का क्षेत्रफल इत्यादि। हमें बताया जाता है कि एक बार वस्तु विकसित हो जाने पर हम स्मृति में कई बार मूल्यों के एक अलग सेट को निर्दिष्ट कर सकते हैं। वस्तु के प्रत्येक उदाहरण में और उनके साथ काम कर सकते हैं।
इसके अलावा, इस ऑब्जेक्ट को अन्य ऑब्जेक्ट्स के हिस्से के रूप में इस्तेमाल किया जा सकता है जिसे हम कम कोड के साथ विकसित करते हैं क्योंकि हमारे नए क्लास ऑब्जेक्ट का हिस्सा पहले से ही ClsArea क्लास मॉड्यूल में विकसित किया गया है।
अगले सप्ताह हम सीखेंगे कि कई वस्तुओं के क्षेत्रफल की गणना करने के लिए कस्टम ऑब्जेक्ट्स की एक सरणी कैसे बनाई जाती है।
- एमएस-एक्सेस क्लास मॉड्यूल और वीबीए
- एमएस-एक्सेस वीबीए क्लास ऑब्जेक्ट एरेज़
- एमएस-एक्सेस बेस क्लास और व्युत्पन्न ऑब्जेक्ट
- VBA बेस क्लास और व्युत्पन्न ऑब्जेक्ट-2
- आधार वर्ग और व्युत्पन्न वस्तु प्रकार
- एमएस-एक्सेस रिकॉर्डसेट और क्लास मॉड्यूल
- एक्सेस क्लास मॉड्यूल और रैपर क्लासेस
- आवरण वर्ग कार्यक्षमता परिवर्तन
- सुश्री-पहुंच और संग्रह वस्तु मूल बातें
- एमएस-एक्सेस क्लास मॉड्यूल और कलेक्शन ऑब्जेक्ट
- संग्रह वस्तु और प्रपत्र में तालिका रिकॉर्ड
- डिक्शनरी ऑब्जेक्ट बेसिक्स
- डिक्शनरी ऑब्जेक्ट बेसिक्स-2
- शब्दकोश ऑब्जेक्ट की और आइटम को सॉर्ट करना
- डिक्शनरी से फ़ॉर्म में रिकॉर्ड प्रदर्शित करें
- कक्षा वस्तुओं को शब्दकोश आइटम के रूप में जोड़ें
- फॉर्म पर क्लास ऑब्जेक्ट डिक्शनरी आइटम अपडेट करें