Access
 sql >> डेटाबेस >  >> RDS >> Access

आवरण वर्ग कार्यक्षमता परिवर्तन

परिचय।

पिछले हफ्ते हमने नए क्लास मॉड्यूल में दो बार ClsArea क्लास का उपयोग करते हुए एक नया रैपर क्लास ClsTiles बनाया है, फ्लोर के लिए एक उदाहरण आयाम मान, और दूसरा उदाहरण फर्श-टाइल . के लिए आयाम, कमरे के लिए टाइलों की संख्या की गणना करने के लिए।

नए रैपर क्लास मॉड्यूल में, हम वॉल्यूम क्लास (ClsVolume2) को सेल्स (ClsSales) क्लास में बदल देंगे। कुछ कॉस्मेटिक बदलावों के साथ, हम इसे रैपर क्लास में पूरी तरह से नया रूप देंगे, वॉल्यूम कैलकुलेशन क्लास के रूप में इसकी असली पहचान छिपाते हुए और डिस्काउंट के साथ उत्पादों की बिक्री मूल्य की गणना के लिए इसका इस्तेमाल करेंगे।

यह सही है, हमारे ClsVolume2 वर्ग में विवरण, मात्रा, इकाई मूल्य और छूट प्रतिशत जैसे आवश्यक बिक्री डेटा मान दर्ज करने के लिए सभी आवश्यक गुण हैं, जो क्रमशः वॉल्यूम क्लास गुण strDesc, dblLength, dblWidth, dblHeight में जाएंगे।

हमें यह नहीं भूलना चाहिए कि ClsVolume2 क्लास एक व्युत्पन्न क्लास . है , बेस क्लास के रूप में ClsArea का उपयोग करके बनाया गया है।

ClsVolume2 कक्षा फिर से देखी गई।

लेकिन, सबसे पहले, ClsVolume2 क्लास मॉड्यूल (हमारे नए ClsSales क्लास मॉड्यूल के लिए बेस क्लास) का VBA कोड संदर्भ के लिए नीचे दिया गया है:

विकल्प डेटाबेस की तुलना करेंविकल्प स्पष्ट निजी p_Height को DoublePrivate के रूप में p_Area ClsAreaPublic संपत्ति के रूप में dblHeight() प्राप्त करें डबल dblHeight =p_HeightEnd संपत्ति के रूप में सार्वजनिक संपत्ति dblHeight (ByVal dblNewValue =CA के रूप में) p_Height =* dblNewValueEnd संपत्ति डबल के रूप में। .dblWidth * Me.dblHeightEnd FunctionPublic संपत्ति CArea () प्राप्त करें क्योंकि ClsArea सेट CArea =p_AreaEnd संपत्ति सार्वजनिक संपत्ति सेट CArea (ByRef AreaValue के रूप में ClsArea) सेट करें नथिंगएंड सब

एकमात्र समस्या जो हमें सीधे बिक्री . के लिए ClsVolume2 क्लास का उपयोग करने से रोकती है डेटा प्रविष्टि यह है कि संपत्ति प्रक्रिया नाम dblLength, dblWidth, dblHeight बिक्री संपत्ति मान मात्रा, यूनिटप्राइस, डिस्काउंट प्रतिशत के लिए मेल नहीं खाता है। ClsVolume2 क्लास के संख्यात्मक डेटा प्रकार सभी डबल सटीक संख्याएं हैं और वे हमारे सेल्स क्लास के लिए उपयुक्त हैं और डेटा प्रकार परिवर्तन के बिना उपयोग किया जा सकता है। सार्वजनिक कार्य क्षेत्र () और वॉल्यूम () नाम भी उपयुक्त नहीं हैं लेकिन उनके गणना सूत्र का उपयोग बिना बदलाव के बिक्री गणना के लिए किया जा सकता है।

a) क्षेत्रफल =dblLength * dblWidth TotalPrice =मात्रा * UnitPrice

के लिए उपयुक्त है

b) वॉल्यूम =एरिया * dblHeight डिस्काउंटअमाउंट के लिए अच्छा है =TotalPrice * DiscountPercentage

यहाँ, हमारे पास ClsVolume2 क्लास को ClsSales Class के रूप में उपयोग करने के लिए दो विकल्प हैं।

  1. सबसे आसान तरीका है ClsVolume2 क्लास की कॉपी बनाना और इसे ClsSales नाम के नए क्लास मॉड्यूल में सेव करना। बिक्री मूल्यों और गणनाओं के लिए उपयुक्त संपत्ति प्रक्रिया और सार्वजनिक कार्य नामों में उचित परिवर्तन करें। नए वर्ग मॉड्यूल में, यदि आवश्यक हो, और फ़ंक्शन जोड़ें।
  2. बेस क्लास के रूप में ClsVolume2 का उपयोग करके एक रैपर क्लास बनाएं और बेस क्लास की संपत्ति प्रक्रियाओं और फ़ंक्शन नामों को मास्क करते हुए उपयुक्त संपत्ति प्रक्रियाएं और सार्वजनिक फ़ंक्शन नाम परिवर्तन बनाएं। यदि आवश्यक हो, तो रैपर क्लास में नए फंक्शन बनाएं।

पहला विकल्प कुछ हद तक सीधा और लागू करने में आसान है। लेकिन, हम यह जानने के लिए दूसरे विकल्प का चयन करेंगे कि नए रैपर क्लास में बेस क्लास के गुणों को कैसे संबोधित किया जाए और इसके मूल संपत्ति के नामों को नए के साथ कैसे छिपाया जाए।

परिवर्तित ClsVolume2 वर्ग।

  1. अपना डेटाबेस खोलें और VBA संपादन विंडो (Alt+F11) प्रदर्शित करें।
  2. कक्षा मॉड्यूल का चयन करें सम्मिलित करें . से मेनू, एक नया कक्षा मॉड्यूल सम्मिलित करने के लिए।
  3. क्लास मॉड्यूल का नाम संपत्ति मान को Class1 से ClsSales में बदलें ।
  4. मॉड्यूल में निम्नलिखित वीबीए कोड को कॉपी और पेस्ट करें और कोड को सेव करें:
    विकल्प डेटाबेस की तुलना करेंऑप्शन एक्सप्लिसिट प्राइवेट एम_सेल्स जैसे ClsVolume2Private Sub Class_Initialize() 'मेमोरी सेट में बेस क्लास को इंस्टेंट करें m_Sales =नया ClsVolume2End SubPrivate Sub Class_Terminate() 'मेमोरी सेट से बेस क्लास साफ़ करें m_Sales =कुछ भी नहीं सबपब्लिक प्रॉपर्टी विवरण प्राप्त करें() स्ट्रिंग विवरण के रूप में =m_Sales.CArea.strDesc 'बेस क्लासएंड प्रॉपर्टी से प्राप्त करें सार्वजनिक संपत्ति विवरण दें (ByVal strValue As String) m_Sales.CArea.strDesc =strValue ' बेस क्लासएंड प्रॉपर्टी को असाइन करें सार्वजनिक संपत्ति मात्रा प्राप्त करें () डबलक्वांटिटी के रूप में =m_Sales.CArea.dblLength संपत्ति समाप्त करेंसार्वजनिक संपत्ति मात्रा दें(ByVal dblValue As Double) यदि dblValue> 0 तो m_Sales.CArea.dblLength =dblValue ' clsArea को असाइन करें, ClsVolume2 का बेस क्लास अन्यथा MsgBox "मात्रा:" और dblValue और "अमान्य।", vbExclaration, "ClsSales" m_Sales.CArea.dblLength करते समय करें <=0 m_Sales.CArea.dblLength =इनपुटबॉक्स ("मात्रा:, मान्य मान> 0") लूप एंड इफएंड प्रॉपर्टीपब्लिक प्रॉपर्टी यूनिटप्राइस प्राप्त करें () डबल यूनिटप्राइस के रूप में =m_Sales.CArea.dblWidth संपत्ति समाप्त करेंसार्वजनिक संपत्ति मान लें UnitPrice(ByVal dblValue As Double) यदि dblValue> 0 तो m_Sales.CArea.dblWidth =dblValue ' clsArea को असाइन करें, ClsVolume2 का बेस क्लास अन्यथा MsgBox "UnitPrice:" और dblValue और "अमान्य।", vbExक्लेमेशन, "ClsSales" m_Sales.CArea.dblWidth करते समय करें <=0 m_Sales.CArea.dblWidth =InputBox("UnitPrice:, Valid Value>0") लूप एंड इफएंड प्रॉपर्टीपब्लिक प्रॉपर्टी डिस्काउंट प्राप्त करें () डबल डिस्काउंट परसेंट के रूप में =m_Sales.dblHeight संपत्ति समाप्त करेंसार्वजनिक संपत्ति DiscountPercent(ByVal dblValue As Double)' को ClsVolume2 की कक्षा .dblHeight को असाइन करें dblValue केस का चयन करें <=0 MsgBox "छूट% -ve मान" और dblValue और "अमान्य!", vbExक्लेमेशन, "ClsSales" करते समय <<मजबूत>m_Sales.dblHeight <=0 m_Sales.dblHeight =इनपुटबॉक्स ("छूट%, मान्य मान> 0") लूप केस है> =1 m_Sales.dblHeight =dblValue / 100 केस 0.01 से 0.75 m_Sales.dblHeight =dblValueEnd SelectEnd प्रॉपर्टी पब्लिक फंक्शन TotalPrice () DoubleDim Q के रूप में डबल, U के रूप में DoubleQ =m_Sales.CArea.dblLengthU =m_Sales.CArea.dblWidthIf (Q * U) =0 फिर MsgBox "मात्रा / UnitPrice मान (ओं) 0", vb विस्मयादिबोधक , "ClsVolume" और TotalPrice =m_Sales.CArea.Area.Area 'बेस क्लास से प्राप्त करें ClsAreaEnd IfEnd FunctionPublic Function DiscountAmount() डबल DiscountAmount =TotalPrice के रूप में * DiscountPercentEnd FunctionPublic Function PriceAfterDiscount() PriceAfterDiscount =TotalPrice - DiscountAmountEnd Function 

हमने रैपर क्लास में क्या किया? ClsVolume2 क्लास का एक इंस्टेंस बनाया और इसके प्रॉपर्टी के नाम, फंक्शन के नाम और उचित त्रुटि संदेशों के साथ अतिरिक्त सत्यापन जांच को बदल दिया और 'वैल्यू इन dblLength जैसे अनुपयुक्त त्रुटि संदेशों के साथ बेस क्लास के सत्यापन जांच में जाने से रोका। उन्हें> संपत्ति अमान्य है' वॉल्यूम वर्ग से पॉप अप हो सकता है।

उपरोक्त कोड में मैंने जिन पंक्तियों को हाइलाइट किया है, उनकी जाँच करें और मुझे आशा है कि आप यह पता लगाने में सक्षम होंगे कि बेस क्लास ClsVolume2 से संपत्ति के मूल्यों को कैसे असाइन/पुनर्प्राप्त किया जाता है।

आप ClsArea क्लास मॉड्यूल के माध्यम से पहले और ClsVolume2 क्लास मॉड्यूल के आगे जा सकते हैं - बेस क्लास के रूप में ClsArea क्लास का उपयोग करके व्युत्पन्न क्लास। इन दोनों कोडों को पढ़ने के बाद आप इस रैपर क्लास में कोड पर फिर से विचार कर सकते हैं।

मानक मॉड्यूल में CLsSales कक्षा के लिए परीक्षण कार्यक्रम।

आइए हम रैपर क्लास को आज़माने के लिए एक टेस्ट प्रोग्राम लिखें।

  1. निम्न VBA कोड को एक मानक मॉड्यूल में कॉपी और पेस्ट करें। 25S.DiscountPercent =0.07Debug. Print "Description", "Quantity", "UnitPrice", "Total Price", "Disc. Amt", "To Payment" with S Debug.Print .Description, .Quantity, .UnitPrice, . कुल मूल्य, .छूट राशि , . PriceAfterDiscount एंड विदएंड सब

    कोड चलाएँ।

  2. डीबग विंडो को खुला रखें (Ctrl+G).
  3. कोड के बीच में कहीं क्लिक करें और F5 दबाएं कोड चलाने के लिए कुंजी और डीबग विंडो में आउटपुट प्रिंट करने के लिए।
  4. आप किसी भी इनपुट मान को ऋणात्मक संख्या के साथ दर्ज करके और नए त्रुटि संदेश को ट्रिगर करने के लिए कोड चलाकर कोड का और परीक्षण कर सकते हैं। किसी भी इनपुट लाइन को अक्षम करें, एक टिप्पणी चिह्न (') के साथ, कोड चलाएँ, और देखें कि क्या होता है।

उत्पादों की एक श्रृंखला के लिए मूल्य/छूट की गणना करें।

निम्नलिखित परीक्षण कोड सीधे कीबोर्ड से दर्ज करके तीन उत्पादों और बिक्री मूल्यों की एक सरणी बनाता है।

निम्नलिखित कोड को एक मानक मॉड्यूल में कॉपी और पेस्ट करें और आगे रैपर वर्ग का परीक्षण करने के लिए चलाएँ।

पब्लिक सब सेल्सटेस्ट2()डिम एस() क्लससेल्सडिम टीएमपी के रूप में क्लससेल्सडिम जे के रूप में लॉन्गफॉर जे =1 से 3सेट टीएमपी =नई क्लससेल्स टीएमपी। विवरण =इनपुटबॉक्स (जे और ") विवरण") टीएमपी। मात्रा =इनपुटबॉक्स (जे और ") मात्रा") tmp.UnitPrice =InputBox(j &") UnitPrice") tmp.DiscountPercent =InputBox(j &") Discount Percentage") ReDim Preserve S(1 To j) जैसे ClsSales Set S(j) =tmp Set tmp =कुछ भी नहीं अगला'आउटपुट सेक्शनडिबग। प्रिंट "विवरण", "मात्रा", "यूनिटप्राइस", "कुल मूल्य", "डिस्क एएमटी", "भुगतान करने के लिए" जे =1 से 3 के लिए एस (जे) डीबग.प्रिंट के साथ। विवरण, .मात्रा, .UnitPrice, .TotalPrice, .DiscountAmount, .PriceAfterDiscount End WithNextFor j =1 से 3 सेट S(j) =कुछ भी नहीं नेक्स्टएंड सब

ऐरे में सही मानों की सफल प्रविष्टि के बाद, उत्पाद के नाम और बिक्री मान डीबग विंडो में मुद्रित होते हैं।

कक्षा मॉड्यूल।

  1. एमएस-एक्सेस क्लास मॉड्यूल और वीबीए
  2. एमएस-एक्सेस वीबीए क्लास ऑब्जेक्ट एरेज़
  3. एमएस-एक्सेस बेस क्लास और व्युत्पन्न ऑब्जेक्ट
  4. VBA बेस क्लास और व्युत्पन्न ऑब्जेक्ट-2
  5. आधार वर्ग और व्युत्पन्न वस्तु प्रकार
  6. एमएस-एक्सेस रिकॉर्डसेट और क्लास मॉड्यूल
  7. एक्सेस क्लास मॉड्यूल और रैपर क्लासेस
  8. आवरण वर्ग कार्यक्षमता परिवर्तन

संग्रह वस्तु।

  1. सुश्री-पहुंच और संग्रह वस्तु मूल बातें
  2. एमएस-एक्सेस क्लास मॉड्यूल और कलेक्शन ऑब्जेक्ट
  3. संग्रह वस्तु और प्रपत्र में तालिका रिकॉर्ड

शब्दकोश वस्तु।

  1. डिक्शनरी ऑब्जेक्ट बेसिक्स
  2. डिक्शनरी ऑब्जेक्ट बेसिक्स-2
  3. शब्दकोश ऑब्जेक्ट की और आइटम को सॉर्ट करना
  4. डिक्शनरी से फ़ॉर्म में रिकॉर्ड प्रदर्शित करें
  5. क्लास ऑब्जेक्ट्स को डिक्शनरी आइटम के रूप में जोड़ें
  6. फॉर्म पर क्लास ऑब्जेक्ट डिक्शनरी आइटम अपडेट करें

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बेस क्लास और व्युत्पन्न वस्तु प्रकार

  2. Microsoft Access में रिपोर्ट विज़ार्ड के साथ रिपोर्ट कैसे बनाएँ?

  3. इलास्टिक्स खोज के साथ माइक्रोसॉफ्ट एक्सेस डेटा खोजना

  4. शुरुआती के लिए 5 व्यावहारिक डेटाबेस युक्तियाँ

  5. डेटाबेस सटीकता में सुधार कैसे करें