परिचय।
पिछले हफ्ते हमने सेट . के माध्यम से बेस क्लास ऑब्जेक्ट को पास करने के लिए एक उदाहरण का प्रयास किया है संपत्ति प्रक्रिया, स्मृति में वस्तु का हिस्सा बनने के लिए। पारित वस्तु स्मृति में मुख्य वस्तु का विस्तार या बाल वस्तु बन जाती है। हमारे पहले के प्रोग्राम में चाइल्ड ऑब्जेक्ट को टार्गेट ऑब्जेक्ट पर पास करना हमारे टेस्ट प्रोग्राम के इंस्टेंटिंग चरण में किया गया था। हमने कार्यक्रम के बाद के भाग में पारित वस्तु गुणों के लिए मान निर्दिष्ट किए हैं। अगला उदाहरण थोड़ा अलग है।
उन लोगों के लिए जो एमएस-एक्सेस क्लास मॉड्यूल पर पहले के लेखों को पढ़ना चाहते हैं, लिंक नीचे दिए गए हैं:
- एमएस-एक्सेस क्लास मॉड्यूल और वीबीए
- एमएस-एक्सेस वीबीए क्लास ऑब्जेक्ट एरेज़
- एमएस-एक्सेस बेस क्लास और व्युत्पन्न ऑब्जेक्ट
- VBA बेस क्लास और व्युत्पन्न ऑब्जेक्ट-2
इस बार हम अपने परीक्षण कार्यक्रम में दोनों वस्तुओं (ClsArea - आधार वर्ग, ClsVolume2 - लक्ष्य वर्ग) को अलग-अलग खोलेंगे। लक्ष्य वर्ग ClsVolume2 ऑब्जेक्ट को पास करने से पहले, बेस क्लास ClsArea गुणों में मान असाइन करें। याद रखें कि Volume2 क्लास की अपनी केवल एक ही संपत्ति है, p_Height संपत्ति, और इसकी विधि वॉल्यूम () लंबाई . की आवश्यकता है और चौड़ाई वॉल्यूम की गणना करने के लिए बेस क्लास ClsArea के मान।
- निम्न नमूना परीक्षण कोड को एक मानक मॉड्यूल में कॉपी और पेस्ट करें।
SetNewVol2_2 प्रक्रिया।
Public Sub SetNewVol2_2() 'Method 2/2 Dim CA As ClsArea Dim Vol As ClsVolume2 Set CA = New ClsArea Set Vol = New ClsVolume2 CA.strDesc = "Bed Room" CA.dblLength = 90 CA.dblWidth = 10 Stop 'Here ClsArea class Object CA is passed to the ‘Property procedure Set CArea of ClsVolume2 object Vol Set Vol.CArea = CA 'Pass ClsArea obj to ClsVolume2 Vol.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With Vol.CArea Debug.Print .strDesc, .dblLength, .dblWidth, .Area(), Vol.dblHeight, Vol.Volume() End With Stop Set CA = Nothing Set Vol = Nothing End Sub
VBA कोड समीक्षा।
पहले मंद . में बयान, सीए ClsArea ऑब्जेक्ट और Vol . के रूप में परिभाषित किया गया है ClsVolume2 ऑब्जेक्ट के रूप में। अगले दो कथन स्मृति में दोनों वस्तुओं को त्वरित करते हैं।
अगले तीन कथन ClsArea क्लास ऑब्जेक्ट के गुणों को मान प्रदान करते हैं।
रोकें कथन कोड निष्पादन में विराम देता है ताकि हम स्थानीय विंडो में ऑब्जेक्ट प्रॉपर्टी मानों को सत्यापित कर सकें।
सेट Vol.CArea =CA स्टेटमेंट Vol . में चाइल्ड ऑब्जेक्ट के रूप में ClsArea क्लास ऑब्जेक्ट CA को असाइन करता है (ClsVolume2) वस्तु।
अगले चरण में dblHeight ClsVolume2 क्लास ऑब्जेक्ट की संपत्ति 10 मान के साथ असाइन की गई है।
स्टॉप स्टेटमेंट से पहले अगला स्टेटमेंट मेमोरी से डिबग विंडो में वैल्यू को प्रिंट करता है।
अगले दो सेट स्टेटमेंट प्रोग्राम को खत्म करने से पहले ऑब्जेक्ट्स को मेमोरी से हटा देता है।
स्थानीय विंडो प्रदर्शित करें।
- स्थानीय विंडो का चयन करें दृश्य मेनू से विकल्प।
- कोड के बीच में कहीं क्लिक करें और F5 press दबाएं रोकें . पर प्रोग्राम के रुकने तक कोड चलाने के लिए बयान। वैकल्पिक रूप से, आप F8 . दबा सकते हैं प्रत्येक चरण में परिवर्तनों के लिए स्थानीय विंडो का निरीक्षण करने के लिए कोड को एक बार में एक चरण में चलाने के लिए।
- [+] पर क्लिक करें ऑब्जेक्ट गुण और मान दोनों का विस्तार और प्रदर्शन करने के लिए प्रतीक।
- क्षेत्र की जांच करें और p_Area मान . में ऑब्जेक्ट संदर्भ वॉल्यूम . का कॉलम वस्तु <मजबूत>। वहां मान कुछ नहीं . के रूप में दिख रहा है क्योंकि हमने अभी तक CA ऑब्जेक्ट को वॉल्यूम ऑब्जेक्ट में पास नहीं किया है।
- यदि आपने स्थानीय विंडो की सामग्री देखना समाप्त कर लिया है तो कोड को अगले रोकें तक चलाएँ बयान। अब, क्षेत्र संपत्ति प्रक्रिया और p_Area . प्राप्त करें ऑब्जेक्ट को ClsArea क्लास ऑब्जेक्ट के साथ असाइन किया गया है।
हम इन दोनों वर्गों ClsArea और ClsVolume2 के एक और भिन्न उदाहरण का प्रयास करेंगे।
नया क्लास मॉड्यूल ClsVolume3.
1. एक नया क्लास मॉड्यूल डालें और उसका नाम संपत्ति मान ClsVolume3 . में बदलें ।
2. निम्नलिखित VBA कोड को ClsVolume3 क्लास मॉड्यूल में कॉपी और पेस्ट करें:
Option Compare Database
Option Explicit
'Method three
Private p_Height As Double
Public p_Area As ClsArea
Public Property Get dblHeight() As Double
dblHeight = p_Height
End Property
Public Property Let dblHeight(ByVal dblNewValue As Double)
p_Height = dblNewValue
End Property
Public Function Volume() As Double
Volume = p_Area.dblLength * p_Area.dblWidth * Me.dblHeight
End Function
Private Sub Class_Initialize()
Set p_Area = New ClsArea
End Sub
Private Sub Class_Terminate()
Set p_Area = Nothing
End Sub शुरुआत से ही कोड की जांच करें:p_Height निजी संपत्ति घोषित किया गया। p_Area ClsVolume3 क्लास की संपत्ति को सार्वजनिक . घोषित किया गया ClsArea ऑब्जेक्ट। इसका मतलब है p_Area प्रत्यक्ष प्राप्त करें/चलो के लिए स्वयं के प्रदर्शन योग्य गुणों के साथ ClsVolume3 वर्ग की एक संपत्ति के रूप में दिखाई देगा मानक मॉड्यूल में उपयोगकर्ता कार्यक्रम में संचालन। भले ही ClsArea क्लास ऑब्जेक्ट को ClsVolume3 क्लास की सार्वजनिक संपत्ति के रूप में घोषित किया गया हो, लेकिन इसके गुण ClsArea क्लास में ही इनकैप्सुलेटेड हैं।
चेक करें Class_Initialize() और Class_Terminate() उप-दिनचर्या। ClsArea ऑब्जेक्ट को Class_Initialize() कोड में इंस्टेंट किया जाता है और उपयोगकर्ता-प्रोग्राम समाप्त होने पर, Class_Terminate() कोड में ऑब्जेक्ट को मेमोरी से हटा देता है।
परीक्षण कार्यक्रम।
नमूना परीक्षण VBA कोड नीचे दिया गया है।
कोड को मानक मॉड्यूल में कॉपी और पेस्ट करें।
Public Sub SNewVol3() 'Here ClsArea class is declared as a Public Property of ClsVolume3 Dim volm As ClsVolume3 Set volm = New ClsVolume3 volm.p_Area.strDesc = "Bed Room" volm.p_Area.dblLength = 15 'assign length volm.p_Area.dblWidth = 10 'assign width in clsArea volm.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With volm.p_Area Debug.Print .strDesc, .dblLength, .dblWidth, .Area, volm.dblHeight, volm.Volume End With Set volm = Nothing End Sub
स्थानीय विंडो प्रदर्शित करें (देखें - -> स्थानीय विंडो), यदि यह पहले से खुली नहीं है।
कोड के बीच में कहीं क्लिक करें और F8 press दबाएं VBA कोड को एक बार में एक लाइन निष्पादित करने के लिए और प्रत्येक चरण में क्या होता है, इसे ट्रैक करने के लिए स्थानीय विंडो देखें।
ClsVolume क्लास के पहले उदाहरण को छोड़कर, ClsVolume क्लास के उपरोक्त सभी वेरिएंट कम कोड के साथ लिखे गए हैं।
रिकॉर्डसेट ऑब्जेक्ट के साथ काम करना।
अगले सप्ताह हम एक अंतर्निहित वस्तु के साथ काम करेंगे DAO.Recordset और एक क्लास मॉड्यूल बनाएं करने के लिए:
- फ़ील्ड की गणना और अद्यतन करें,
- डेटा क्रमबद्ध करें,
- सॉर्ट किए गए डेटा को डीबग विंडो में प्रिंट करें,
- और सॉर्ट किए गए डेटा के साथ तालिका का एक क्लोन बनाएं।
अगले सप्ताह यह बहुत सारी कार्रवाई है।
इस विषय पर सभी लिंक की सूची।
- एमएस-एक्सेस क्लास मॉड्यूल और वीबीए
- एमएस-एक्सेस वीबीए क्लास ऑब्जेक्ट एरेज़
- एमएस-एक्सेस बेस क्लास और व्युत्पन्न ऑब्जेक्ट
- VBA बेस क्लास और व्युत्पन्न ऑब्जेक्ट-2
- आधार वर्ग और व्युत्पन्न वस्तु प्रकार
- एमएस-एक्सेस रिकॉर्डसेट और क्लास मॉड्यूल
- एक्सेस क्लास मॉड्यूल और रैपर क्लासेस
- आवरण वर्ग कार्यक्षमता परिवर्तन
- सुश्री-पहुंच और संग्रह वस्तु मूल बातें
- एमएस-एक्सेस क्लास मॉड्यूल और कलेक्शन ऑब्जेक्ट
- संग्रह वस्तु और प्रपत्र में तालिका रिकॉर्ड
- डिक्शनरी ऑब्जेक्ट बेसिक्स
- डिक्शनरी ऑब्जेक्ट बेसिक्स-2
- शब्दकोश ऑब्जेक्ट की और आइटम को सॉर्ट करना
- डिक्शनरी से फ़ॉर्म में रिकॉर्ड प्रदर्शित करें
- क्लास ऑब्जेक्ट्स को डिक्शनरी आइटम के रूप में जोड़ें
- फॉर्म पर क्लास ऑब्जेक्ट डिक्शनरी आइटम अपडेट करें