Friday, April 26, 2024
Home Blog Page 8

वी.बी. डॉट नेट में रिपोर्टिंग | Reporting On VB.NET – Best Info

0
वी.बी. डॉट नेट में रिपोर्टिंग क्या है एवं उपयोग | विजुअल बेसिक में डाटा रिपोर्ट क्या है? | मैं विजुअल स्टूडियो 2012 में रिपोर्ट कैसे बनाऊं? | Reporting On VB.NET
वी.बी. डॉट नेट में रिपोर्टिंग क्या है एवं उपयोग | विजुअल बेसिक में डाटा रिपोर्ट क्या है? | मैं विजुअल स्टूडियो 2012 में रिपोर्ट कैसे बनाऊं? | Reporting On VB.NET

Table of Contents

वी.बी. डॉट नेट में रिपोर्टिंग क्या है एवं उपयोग | विजुअल बेसिक में डाटा रिपोर्ट क्या है? | मैं विजुअल स्टूडियो 2012 में रिपोर्ट कैसे बनाऊं? | Reporting On VB.NET

वी.बी. डॉट नेट में रिपोर्टिंगपरिचय (Introduction) – किसी भी एप्लिीकेशन का रिपोर्टिंग एक महत्त्वपूर्ण अंश होता है। आप यदि किसी कम्पनी के कार्य को समझते हैं तो समझेंगे कि यह कितना महत्वपूर्ण है। रिपोर्टिंग सूचना प्रस्तुत करने का एक माध्यम है। सेल्स रिपोर्ट, विक्रय रिपोर्ट, हाजिरी रिपोर्ट, साप्ताहिक रिपोर्ट, दैनिक रिपोर्ट, मासिक रिपोर्ट इत्यादि रिपोर्ट के कई रूप हैं। वी.बी. डॉट नेट आपको इसी तरह के रिपोर्ट बनाने का एक बढ़िया फीचर उपलब्ध करता है। इस का नाम क्रिस्टल रिपोर्ट है। इस अध्याय में हम इसी पर चर्चा करेंगे।

इस पार्ट में आज हम जानेगे :- वी.बी. डॉट नेट में रिपोर्टिंग (Reporting On VB.NET), रिपोर्ट टूल का उपयोग (Use of Reporting Tool), क्रिस्टल रिपोर्ट क्या है ? (What is Crystal Report ?), एक्सेस में डाटाबेस बनाना (Creating A Database In MS-ACESS), क्रिस्टल रिपोर्ट बनाना (Creating A Crystal Report), प्रोग्राम के माध्यम से क्रिस्टल रिपोर्ट दर्शाना (Showing a Crystal Report Programmatically) 

रिपोर्ट टूल का उपयोग (Use of Reporting Tool)

डाटा को प्राप्त (retrieve) करना कठिन कार्य नहीं है। आप कोड लिखकर विण्डोज एप्लिकेशन में रिपोर्ट प्रस्तुत कर सकते हैं। डॉट नेट फ्रेमवर्क में आप अपने डाटा को डाटाग्रीड तथा डाटालिस्ट में जोड़कर भी यह कार्य कर सकते हैं। परन्तु डाटा को एक औपचारिक रिपोर्ट फॉरमेट में प्रस्तुत करना थोड़ा जटिल कार्य है। रिपोर्ट के विभिन्न भाग को समूह में व्यवस्थित करना, योग निकालना इत्यादि ऐसे कार्य हैं जिनको प्रोग्राम के माध्यम से रिपोर्ट में जोड़ना समय लेने वाला कार्य तथा कठिन हो सकता है। इन कार्यों के लिए वी.बी. डॉट नेट क्रिस्टल रिपोर्ट्ज नामक फीचर प्रोग्रामरों को उपलब्ध कराता है।

क्रिस्टल रिपोर्ट क्या है ? (What is Crystal Report ?)

क्रिस्टल रिपोर्ट विजुअल स्टूडियो में वी.बी. 6 तथा उससे पहले के संस्करणों में भी महत्वपूर्ण अंश बन कर रहा है। यह विजुअल स्टूडियो 2005 में रिपोर्टिंग के लिए एक स्टैण्डर्ड टूल है। यह विजुअल स्टूडियो 2005 के प्रत्येक इंस्टॉलेशन के साथ बाई डिफाल्ट उपलब्ध होता है तथा सीधे-सीधे डेवलपमेण्ट इन्वायरमेण्ट से इंटिग्रेट होता है। क्रिस्टल रिपोर्ट की सहायता से आप अपने ग्राफिकल यूजर इंटरफेस आधारित प्रोग्राम में जटिल तथा व्यवसायिक (professional) रिपोर्ट बना सकते हैं। आप अपने रिपोर्ट को किसी भी डाटा सोर्स के साथ जोड़ने के अतिरिक्त प्रॉक्सी डाट (यथा एडू डॉट नेट डाटासेट) के साथ भी जोड़ सकते हैं। इसमें दिये गये विजार्ड रिपोर्ट में विभिन्न प्रकार के कार्य को
करने में अत्यंत सहायक होता है।

सारांश में यदि कहें तो क्रिस्टल रिपोर्ट वी.बी. डॉट नेट का एक रिपोर्टिंग एप्लिकेशन है जो विभिन्न डाटा स्रोतों (data sources) से रिपोर्ट तैयार कर सकता है। आप क्रिस्टल रिपोर्ट की सहायता से रिपोर्ट बना सकते हैं उन्हें स्क्रीन पर देख सकते हैं तथा उन्हें कागज पर छाप सकते हैं।
क्रिस्टल रिपोर्ट चूँकि किसी डाटाबेस से जुड़कर रिपोर्ट तैयार करता है इसलिए आपको क्रिस्टल रिपोर्ट बनाने से पहले माइक्रोसॉफ्ट एक्सेस 2003 में डाटाबेस बनाने की विधि समझाना चाहता हूँ। इस डाटाबेस के संदर्भ में ही क्रिस्टल रिपोर्ट बनाना सिखाऊँगा। इस खण्ड में जो डाटाबेस बनाने जा रहा हूँ उसका नाम CUSTOMERS.MDB है तथा इसके दो टेबल CUSTOMDETAILS तथा OUTSTANDINGS हैं।

वी.बी. डॉट नेट में रिपोर्टिंग क्या होता है एवं कार्य | एक्सेस में डाटाबेस बनाने की पूरी प्रक्रिया | क्रिस्टल रिपोर्ट को देखने की विधि का वर्णन करें। Complete Process Of Creating A Database In Access

वी.बी. डॉट नेट में रिपोर्टिंग क्या है एवं उपयोग | विजुअल बेसिक में डाटा रिपोर्ट क्या है? | मैं विजुअल स्टूडियो 2012 में रिपोर्ट कैसे बनाऊं? | Reporting On VB.NET
वी.बी. डॉट नेट में रिपोर्टिंग क्या है एवं उपयोग | विजुअल बेसिक में डाटा रिपोर्ट क्या है? | मैं विजुअल स्टूडियो 2012 में रिपोर्ट कैसे बनाऊं? | Reporting On VB.NET

एक्सेस में डाटाबेस बनाना (Creating A Database In MS-ACESS)

एक्सेस में डाटाबेस बनाना बहुत ही आसान है। एक्सेस में डाटाबेस बनाने के लिए आप कम्प्यूटर खोलकर निम्नलिखित पदों  का अनुसरण करते जाइए-

  1. Start को क्लिक करें।
  2. All Programs को इंगित करें। Microsoft Office को इंगित करें तथा Microsoft Office Access 2003 का चयन
    करें।
  3. तत्पश्चात् आप माइक्रोसॉफ्ट ऑफिस एक्सेस 2003 देखेंगे।
  4. यहाँ File को क्लिक करें तथा New का चयन करें। तत्पश्चात् विण्डो के दायीं ओर चित्र 11.3 की भाँति New File
    पेन दिखेगा।
  5. Blank Database को क्लिक करें। उसके बाद File New Database डायलॉग बॉक्स प्रकट होगा। File name:
    टेक्स्ट बॉक्स में CUSTOMERS टाइप करें।

File New Database

  • Create को क्लिक करें।
  • उसके बाद एक नया डायलॉग बॉक्स प्रकट होगा। यहाँ Create table in Design View को दो बार क्लिक करें।
  • तत्पश्चात् एक नया विण्डो प्रकट होगा। यहाँ आपको टेबल के फील्ड बनाने हैं जिनके आधार पर बाद में रिकॉर्ड प्रविष्ट करेंगे। इसके शीर्षक बार में आप Table1: Table देखते हैं जो टेबल का नाम (Tablel) दिखाता है। Table1 डिफॉल्ट नाम है यह तब तक रहता है जब तक कि आप इसे सुरक्षित करते समय इच्छानुसार नाम न दे दें। 
  • Field Name कॉलम में पहले फील्ड का नाम टाइप करें। पहले फील्ड का नाम इस टेबल का CustID है। इसे Field Name कॉलम में टाइप करके TAB की दबाएँ जो कर्सर को Data Type कॉलम में ले जाता है। जब आप Data कॉलम में आते हैं तो एक कॉम्बो बॉक्स प्रकट होता है जिसमें Text पहले से चयनित है। कॉम्बो बॉक्स को क्लिक करें तथा Number का चयन करें। Description कॉलम को रिक्त रहने दें।
  • जब आप फील्ड बना रहे होते हैं तब उसी विण्डो के नीचले हिस्से में Field Properties पेन प्रकट होता है। यहाँ आप
    फील्ड में आप रिकॉर्ड को प्रविष्ट करना आवश्यक बनाना चाहते हैं तो Required में Yes का चयन करें। (देखें चित्र
    फील्ड के फॉरमेट यथा फील्ड आकार, फॉरमेट (Number, Date इत्यादि के लिए) इत्यादि को सेट करते हैं।
  • इसी प्रकार आगे के फील्ड को टाइप करें। जब आप इस टेबल के सभी फील्ड डाल लें तो चित्र दिखना चाहिए।
  • CTRL+W की-बोर्ड से एक साथ दबाकर इसे सुरक्षित करें तथा इसे एक नया नाम दें। जब आप CTRL+W दबाते हैं तब एक संदेश प्रकट होता है जो आपको टेबल में किये गये बदलाव को सुरक्षित करने के लिए कहता है। Yes. उसके बाद आप Save As डायलॉग बॉक्स देखेंगे। Table Name: टेक्स्ट बॉक्स में CUSTOMDETAILS टाइप करें. तथा OK क्लिक करें।
  • किसी रिलेशनल डाटाबेस डिजायन करने में प्राइमरी की एक महत्वपूर्ण अवयव है। प्राइमरी की का उपयोग डाटाबेस के तालिकाओं के मध्य संबंध स्थापित करने में होता है। माइक्रोसॉफ्ट इसका ख्याल करता है तथा इसीलिए यहाँ आपसे यह जानना चाहता है कि आप किसी फील्ड को प्राइमरी की के रूप में सेट करना चाहते हैं अथवा नहीं। यह संदेश इसलिए प्रकट हुआ है क्योंकि आपने अभी तक किसी फील्ड को प्राइमरी की सेट नहीं किया है।
  • No क्लिक करें। यदि आप Yes क्लिक कर देते हैं तो माइक्रोसॉफ्ट एक्सेस एक नया फील्ड बनाकर उसे प्राइमरी की सेट कर देता है। मैं यह नहीं चाहता। हमें अपने बनाये हुए फील्ड Custld को प्राइमरी की के रूप में सेट करना है। यहाँ आप No क्लिक करें।
  • इसके बाद आप फिर से डाटाबेस विण्डो पर लौट आऐंगे जहाँ इस बार आप उस टेबल का नाम देखेंगे जो आपने अभी अभी बनाया है।
  • अब CustID पर प्राइमरी की सेट करें। प्राइमरी की सेट करने के लिए पहले टेबल को डिजायन व्यू में खोलें। इसके लिए टेबल को दायाँ क्लिक करें तथा पॉप अप मेन्यू से Design View का चयन करें।
  • इसके बाद आपका टेबल डिजायन मोड में खुलेगा। CustID को दायाँ क्लिक करें तथा पॉप अप मेन्यू में Primary Key का चयन करें। अब आपने CustID पर प्राइमरी की सेट कर लिया है।
  • CTRL+W की-बोर्ड से दबाकर इस बदलाव को सुरक्षित कर लें।
  • अब टेबल में डाटा डालेंगे। इसके लिए डाटाबेस विण्डो में CUSTOMDETAILS टेबल को दो बार क्लिक करें।
  • जब आप उस टेबल में रिकॉर्ड (डाटा) प्रविष्ट करने के लिए उस को दो बार क्लिक करेंगे तब एक विण्डो खुलेगा जो एक रिक्त तालिका की तरह होगा तथा जिसके पहले पंक्ति में उन फील्ड के नाम होंगे जो आपने टेबल में जोड़े हैं।
  • सावधानी से तालिका सभी रिकॉर्ड को डालें। तालिका सभी रिकॉर्ड को डालने के बाद आपका टेबल दिखना चाहिए।
  • इसी प्रकार OUTSTANDINGS नाम का एक और टेबल बनाएँ जिसमें CUSTID तथा DUES नाम का दो फील्ड होना चाहिए।
  • CUSTID को प्राइमरी की सेट करें। तथा इसमें रिकॉर्ड डालें।
  • File तथा Exit का चयन करके माइक्रोसॉफ्ट एक्सेस को बंद करें।

क्रिस्टल रिपोर्ट बनाना (Creating A Crystal Report)

पिछले खण्ड में आपने यह जाना कि माइक्रोसॉफ्ट एक्सेस में डाटाबेस कैसे बनाते हैं। यद्यपि यह मेरे इस विषय का हिस्सा रिपोर्ट आपके द्वारा बनाये गये डाटाबेस से डाटा को प्राप्त कर ही रिपोर्ट प्रस्तुत करता है। अब हम देखते हैं कि क्रिस्टल नहीं था परन्तु क्रिस्टल रिपोर्ट को समझाने से पहले यह आवश्यक था कि डाटाबेस बनाया कैसे जाता है यह जान लें। क्रिस्टल रिपोर्ट कैसे बनाया जाय। क्रिस्टल रिपोर्ट को बनाने के लिए निम्नलिखित पदों का आपने कम्प्यूटर पर अनुसरण करें-

  1. विजुअल स्टूडियो खोलें। विजुअल स्टूडियो को खोलने के लिए Start → All Programs Microsoft Visual Studio 2005 →
    Microsoft Visual Studio 2005 का चयन करें। तत्पश्चात् विजुअल स्टूडियो खुलेगा।
  2. उसके बाद विण्डोज एप्लिकेशन खोलें। इसके लिए File New Project… का चयन करें। तथा New Project डायलॉग बॉक्स
    में Project Types: पेन में Visual Basic के अंदर Windows का चयन करने के बाद Templates: पेन में Windows Application का चयन करें। तथा Name: टेक्स्टबॉक्स में WindowsApplication1 का चयन करें तथा OK क्लिक करें।
  3. तत्पश्चात् आपको विण्डोज फॉर्मूस डिजायनर दिखेगा। इसका नाम Form1.vb है। क्रिस्टल रिपोर्ट बनाने के लिए मेन्यू बार से
    PROJECT को क्लिक करें तथा Add Windows Form का चयन करें। या फिर सॉल्यूशन एक्सप्लोरर में प्रोजेक्ट के नाम को बायां क्लिक करें (सॉल्यूशन एक्सप्लोरर में प्रोजेक्ट का नाम बोल्ड अक्षरों में होता है। तथा पॉप-अप मेन्यू में Add को इंगित करें और New Item …. का चयन करें। दोनों ही स्थितियों में आप को Add New Item डायलॉग बॉक्स दिखेगा।
  4. Crystal Reports का चयन करें। Crystal Report1 क्रिस्टल रिपोर्ट का बाई डिफॉल्ट नाम है, जो Name टेक्स्टबॉक्स में प्रकट हो रहा है। आप चाहें तो इसे बदल सकते हैं। यहाँ मैं इसे डिफॉल्ट ही छोड़ रहा हूँ।
  5. Add क्लिक करें।
  6. इसके बाद Crystal Reports Gallery डायलॉग बॉक्स देखेंगे। इसमें डिफॉल्ट चयन अर्थात् Create a New Crystal Report Document खण्ड में Using the Report Wizard तथा Choose an Expert खण्ड में Standard रहने दें।
  7. OK क्लिक करें।
  8. उसके पश्चात् आप Standand Report Creation Wizard डायलॉग बॉक्स देखेंगे। Available Data Sources के अंतर्गत Create New Connection + चिन्ह को क्लिक करें तथा फिर Access / Excel (DAO) के + चिन्ह को क्लिक करें।
  9. जब आप Access/Excel (DAO) + चिन्ह को क्लिक करते हैं तब Access/Excel डायलॉग बॉक्स प्रकट होता है।
  10. Data Type : कॉम्बो में Access का चयन करें यदि यह चयनित नहीं है। किन्तु यह पहले से ही चयनित होता है। Database Name : के इलिपसिस बटन (…) को क्लिक करें। उसके बाद Open डायलॉग बॉक्स प्रकट होता है।
  11. उस डाटाबेस का चयन करें जिसके आधार पर आप रिपोर्ट बनाना चाहते हैं तथा OK क्लिक करें। उसके पश्चात् आप वापस Access/Excel (DAO) डायलॉग बॉक्स में लौट आएंगे।
  12. इसके बाद आप Database Name : टेक्स्टबॉक्स में डायलॉग बॉक्स का नाम इसके पूर्ण पाथ के साथ देखेंगे। Finish को क्लिक करें।
  13. इसके बाद फिर से आप Standard Report Creation Wizard डायलॉग बॉक्स में लौट आयेंगे जहाँ आप तालिकाओं के नाम सम्मिलित देखेंगे।
  14. अब उस तालिका (table) का चयन करें जिसके डाटा के आधार पर आप क्रिस्टल रिपोर्ट चाहते हैं। आप एक तालिका या एक से अधिक तालिकाओं को जोड़ सकते हैं। यह आप पर निर्भर है। मैं यहाँ दोनों तालिकाओं को जोड़ रहा हूँ। दोनों तालिकाओं को एक बार जोड़ने के लिए >> बटन को क्लिक करें। यदि आप एक ही तालिका को जोड़ना चाहते हैं, तो उस तालिका का चयन करें तथा बटन को क्लिक करें। इसके बाद आप देखेंगे कि दोनों तालिकाएँ Selected Tables पेन में आ गयी हैं
  15. Next को क्लिक करें। उसके बाद विजार्ड का अगला डायलॉग बॉक्स चित्र… की भांति प्रकट होता है। इस डायलॉग बॉक्स में दोनों तालिकाएँ किस प्रकार लिंक हैं को दिखाया गया है। डिफॉल्ट सेटिंग रहने दें तथा Next को क्लिक करें।
  16. उसके बाद आप इसी विजार्ड के Fields डायलॉग बॉक्स को देखेंगे। उन फील्ड को चयन करें जिनके डाटा आप रिपोर्ट में दिखाना चाहते हैं। इसके लिए या >> बटन का उपयोग करें। > बटन से आप एक फील्ड को एक बार में तथा >> बटन का उपयोग कर टेबल के सभी फील्ड को एक बार में जोड़ सकते हैं। CUSTOMDETAILS का चयन करें तथा इसके सभी फील्ड को एक बार में जोड़ने के लिए >> बटन का उपयोग करें। फिर OUTSTANDINGS + चिन्ह को क्लिक करें तथा Dues फील्ड का चयन करें और इसे जोड़ने के लिए बटन का उपयोग करें। इसके बाद Fields to Display : पेन में सभी फील्ड को सम्मिलित देखेंगे।
  17. Finish को क्लिक करें। उसके बाद आप क्रिस्टल रिपोर्टस डिजायनर विण्डो देख सकते हैं। आप आपनी आवश्यकतानुसार डिजायन को व्यवस्थित कर सकते हैं। आपकी स्क्रिन दिखेगी।
  18. अब क्रिस्टल रिपोर्ट का डिजायनिंग कार्य सम्पन्न हो चुका है। तथा अब इसके बाद वी. बी. डॉट नेट में बनाये गये क्रिस्टल रिपोर्ट
    (CrystelReport1) CrystalReportViewer कंट्रोल के माध्यम से कॉल करते हैं। इसेलिए यह करें :
    को ●
    1. Forml.vb जो आपने वी. बी. डॉट नेट में बनाया है को चयन करें। तथा Crystal Report Viewer कंट्रोल को टूलबॉक्स से फॉर्म पर जोड़ने के लिए दो बार क्लिक करें।
    1. अब यहाँ CrystalReport Viewer के साथ रिपोर्ट को जोड़ने के लिए रिपोर्ट का चयन करना होगा। इसके बगैर
      आप का रिपोर्ट कोई डाटा नहीं प्रदर्शित करेगा।
    1. Crystal Report Viewer कंट्रोल का चयन करें तथा इसके उपर दायीं ओर के छोटे से क्षैतिज ऐरो को क्लिक करें
      तथा Choose a Crystal Report का चयन करें।
    1. उसके बाद Choose a Crystal Report डायलॉग बॉक्स चित्र 11.31 की भांति प्रकट होता है। कॉम्बो को क्लिक करें तथा रिपोर्ट यथा CrystalReport1 का चयन करें। जो आपने अभी बनाया है। OK क्लिक करें।
    1. रिपोर्ट व्यूअर को पूरे फॉर्म पर प्रकट करने के लिए इसके Dock प्रॉपर्टी को Fill सेट करें।

F5 दबाऐं। आप रिपोर्ट देखेंगे।

प्रोग्राम के माध्यम से क्रिस्टल रिपोर्ट दर्शाना (Showing a Crystal Report Programmatically)

आप रिपोर्ट को प्रोग्राम के माध्यम से भी दिखा सकते हैं। मान लें कि आपने CrystalReport1 नामक रिपोर्ट बनाया है। इसको बनाने के लिए पिछले खण्ड में बताए गए पदों का अनुसरण करें तथा निम्न पदों का अनुसरण करें-

  1. फॉर्म डिजायनर पर एक बटन जोड़ें तथा टूलबॉक्स से दो बार क्लिक कर CrystalReportViewer को फॉर्म पर टूलबॉक्स से दो बार क्लिक कर जोड़ें। बटन के Text प्रॉपर्टी को Show Form सेट करें। तथा बटन के Name प्रॉपर्टी को btmShow सेट करें तथा CrystalReportViewer के Anchor प्रॉपर्टी को Top, Bottom, Left, Right सेट करें तथा फिर बटन के Anchor प्रॉपर्टी को Bottom सेट करें।
  2. उसके बाद Show Report बटन को दो बार क्लिक करें तथा btnShow इवेण्ट हैण्डलर के लिए यह कोड लिखें-
    Private Sub btm Show_Click (By Val sender As System. Object, By Val e As System.EventArgs) Handles_btnShow.Click

Dim cryRpt As New CrystalReport1

cryRpt.Load (“CrystalReport.rpt”)

CrystalReportViewer1.ReportSource=cryRpt

CrystalReportViewer1.Refresh()

End sub

  • F5 दबाएँ। प्रोग्राम के रन होने पर Show Buttom क्लिक करें। आपको परिणाम दिखेगा। 

आज आपने क्या सीखा (What Did You Learn Today)

  • किसी भी एप्लिीकेशन का रिपोर्टिंग एक महत्त्वपूर्ण अंश होता है। आप यदि किसी कम्पनी के कार्य को समझते रिपोर्ट, हाजिरी रिपोर्ट, साप्ताहिक रिपोर्ट, दैनिक रिपोर्ट, मासिक रिपोर्ट इत्यादि रिपोर्ट के कई रूप हैं। बी.बी. डॉट हैं तो समझेंगे कि यह कितना महत्वपूर्ण है। रिपोर्टिंग सूचना प्रस्तुत करने का एक माध्यम है। सेल्स रिपोर्ट, विक्रय नेट आपको इसी तरह के रिपोर्ट बनाने का एक बढ़िया फीचर उपलब्ध करता है। इस का नाम क्रिस्टल रिपोर्ट है।
  • डाटा को प्राप्त (retrieve) करना कठिन कार्य नहीं है। आप कोड लिखकर विण्डोज एप्लिकेशन में रिपोर्ट प्रस्तुत कर सकते हैं।  डॉट नेट फ्रेमवर्क में आप अपने डाटा को डाटाग्रीड तथा डाटालिस्ट में जोड़कर भी यह कार्य कर सकते हैं।  परन्तु डाटा को एक औपचारिक रिपोर्ट फॉरमेट में प्रस्तुत करना थोड़ा जटिल कार्य है। रिपोर्ट के विभिन्न भाग को समूह में व्यवस्थित करना, योग निकालना इत्यादि ऐसे कार्य हैं जिनको प्रोग्राम के माध्यम से रिपोर्ट में जोड़ना समय लेने वाला कार्य तथा कठिन हो सकता है। इन कार्यों के लिए बी.बी. डॉट नेट क्रिस्टल रिपोर्ट्ज नामक फीचर प्रोग्रामरों को उपलब्ध कराता है। क्रिस्टल रिपोर्ट विजुअल स्टूडियो में बी.बी. 6 तथा उससे पहले के संस्करणों में भी महत्वपूर्ण अंश बन कर रहा है परन्तु यह विजुअल स्टूडियो 2005 में रिपोर्टिंग के लिए एक स्टैण्डर्ड दूल है। यह विजुअल स्टूडियो 2005 के प्रत्येक्ष इंस्टॉलेशन के साथ बाई डिफाल्ट उपलब्ध होता है तथा सीधे-सीधे डेवलपमेण्ट इन्वायरमेण्ट से इंटिग्रेट होता है।
  • क्रिस्टल रिपोर्ट की सहायता से आप अपने ग्राफिकल यूजर इंटरफेस आधारित प्रोग्राम में जटिल तथा व्यवसायिक (professional) रिपोर्ट बना सकते हैं। आप अपने रिपोर्ट को किसी भी डाटा सोर्स के साथ जोड़ने के अतिरिक्त प्रॉक्सी डाटा  (यथा एडू डॉट नेट डाटासेट) के साथ भी जोड़ सकते हैं। इसमें दिये गये विजार्ड रिपोर्ट में विभिन्न प्रकार के कार्य को करने में अत्यंत सहायक होता है।
  • विजुअल स्टूडियो को खोलने के लिए Start Microsoft Visual Studio 2005 का चयन करें।

डाटाबेस प्रोग्रामिंग विद एडू.नेट पार्ट-4 | Database Programming With ADO.NET – Best Info

0
डाटाबेस प्रोग्रामिंग विद एडू.नेटपार्ट-4| डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NETका परिचय| Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू.नेटपार्ट-4| डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NETका परिचय| Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू.नेटपार्ट-4 | डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NET का परिचय | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू.नेट परिचय (Introduction)ए.डी.यू. या एड् डॉट नेट लायब्रेरी का वह संकलन है जो आपको कई डाटाबेस प्रणालियों का इकट्ठा एक्सेस विजुअल स्टूडिया डॉट नेट में उपलब्ध कराता है। डाटाबेस प्रणालियों में आप किसी भी डाटाबेस प्रणाली यथा एस. क्यू.एल., अरिकल का उपयोग कर अपने एप्लिकेशन में डाटाबेस को जोड़ सकते हैं। इस अध्याय में हम आपके साथ एडू डॉट नेट की चर्चा करेंगे। एड् डॉट नेट असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) पर आधारित है। संयोजित डाटा आर्किटेक्चर के बारे में भी इस अध्याय में आपको बताया गया है।

इस पार्ट-4 में हम जानेगे :- डाटासेट्स (Datasets), डाटा के साथ डाटासेट्स को पॉप्यूलेट करना (Populating DataSets With Data), डाटा एडाप्टर DataAdapter 

डाटासेट्स (Datasets)

डाटासेट्स वे ऑब्जेक्ट होते हैं जो डाटा टेबल को रखते हैं जहाँ आप अपने एप्लिकेशन में उस डाटा का उपयोग करने के लिए अस्थायी तौर पर स्टोर कर सकते हैं। यदि आपके एप्लिकेशन को डाटा के साथ कार्य करने की आवश्यकता पड़ती है तब आप डाटासेट में डाटा को लोड नहीं कर सकते हैं जो आपके एप्लिकेशन के साथ कार्य करने के लिए डाटा का स्थानीय इन-मेमोरी कैश उपलब्ध कराता है।

आप डाटासेट से डाटा के साथ तब भी कार्य कर सकते हैं जब आपका एप्लिकेशन आपके डाटाबेस के साथ जुड़ा नहीं होता है। डाटासेट डाटा से हुए बदलाव से संबंधित सूचना को भी मेनटेन करता है ताकि अपडेट्स का पता रह सके तथा एप्लिकेशन का डाटाबेस के साथ जुड़ने पर उन बदलावों के साथ डाटाबेस को अपडेट किया जा सके।

डाटासेट की संरचना रिलेशनल डाटाबेस की संरचना के समान होती है। यह टेबल, रो, कॉलम, कंस्ट्रेन्ट्स तथा रिलेशनशिपस के हायरैर्किकल ऑब्जेक्ट मॉडल को एक्स्पोज करता है। डाटासेट्स टाइप्ड (typed) अथवा अनटाइप्ड (untyped) हो सकते हैं। टाइप्ड डाटासेट्स .xsd फाइलों से अपने स्केम (टेबल तथा कॉलम संरचना) प्राप्त करते हैं तथा इनके लिए प्रोग्राम करना आसान होता है। आप अपने एप्लिकेशनों में टाइप्ड या अनटाइप्ड डाटासेट का उपयोग कर सकते हैं परन्तु विजुअल स्टूडियो में टाइप्ड डाटासेट्स के लिए कई टूल सपोर्ट है। तथा उनके साथ प्रोग्रामिंग करना आसान तथा कम त्रुटि देने वाला होता है।

टाइप्ड डाटासेट्स बनाने के लिए Data Source Configuration Wizard का उपयोग कर सकते हैं। इसे Project मेन्यू से Add New Item का चयन कर भी DataSet को जोड़ सकते हैं। अनटाइप्ड डाटासेट्स को बनाने के लिए Windows Forms डिजायनर या कम्पोनेण्ट डिजायनर खण्ड में टूलबॉक्स से DataSet को ड्रैग करें। डाटासेट्स बनाने के बाद डाटासेट डिजायनर में उन्हें संपादित किया जा सकता है। 
टाइपूड तथा अनटाइण्ड डाटासेट् को बनाने तथा इसके साथ कार्य करने के लिए System. Data नेमस्पेस का उपयोग होता है।

डाटासेट के ऑब्जेक्ट स्टैण्डर्ड प्रोग्रामिंग यथा प्रॉपर्टी तथा कलेक्शन के माध्यम से एक्सपोज होते हैं। उदाहरण के लिए-

1. DataSet क्लास में DataTableCollection (डाटा टेबलूस का संकलन) तथा DataRelation Collection (Data Relation ऑब्जेक्ट का संकलन) सम्मिलित होता है।

2. DataTable क्लास में DataRowCollection (टेबल से के संकलन) तथा Data Colurnn Collection (डाटा कॉलम का संकलन), ChildRelations तथा ParentRelations (डाटा रिलेशन्स का संकलन) शामिल होता है। 3. DataRow क्लास में RowState प्रॉपर्टी होता है जिसके मान ये दर्शाते हैं कि डाटाबेस से डाटा टेबल को लोड किए जाने के बाद से में बदलाव हुआ है अथवा नहीं तथा यह बदलाव कैसे हुआ है। RowState प्रॉपटी में Deleted, Modified, Added तथा Unchanged जैसे संभावित मान होते हैं।

डाटाबेस प्रोग्रामिंग विद एडू.नेट | एडीओ नेट क्या है? | हम डेटाबेस प्रोग्रामिंग का अध्ययन क्यों करते हैं? | Difference Between DAO RDO And ADO In Vb In Hindi

डाटाबेस प्रोग्रामिंग विद एडू.नेटपार्ट-4| डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NETका परिचय| Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू.नेटपार्ट-4| डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NETका परिचय| Database Programming With ADO.NET In Hindi

डाटा के साथ डाटासेट्स को पॉप्यूलेट करना (Populating DataSets With Data)

डाटासेट में बाई डिफॉल्ट कोई वास्तविक डाटा नहीं होता है। डाटा के साथ डाटासेट को भरने से तात्पर्य है प्रत्येक DataTable ऑब्जेक्ट में डाटा को लोड करना जो डाटासेट का निर्माण करता है। आप TableAdapter क्वेरी अथवा डाटा अडैप्टर को कमाण्ड्स (यथा SqiDataAdapter) को एक्जिक्यूट का डाटा टेबल को भरते हैं। जब आप डाटा के साथ डाटासेट को करते हैं तब कई इवेण्ट जागृत होते हैं तथा बाधाएँ (constraints) रुकती है।

जब आप अपने विण्डोज एप्लिकेशन में फॉर्म पर Data Sources Window में आइटमों को ड्रैग करते हैं तब फॉर्म के लोड डवेण्ट हेण्डलर में डाटासेट को भरने वाला कोड स्वतः ही जुड़ जाता है। TableAdapter के साथ डाटासेट को भरने का सामान्यतः यह कोड होता है-

Me. CustomersTableAdapter. Fill (Me.NorthwindDataSet.Customers)

आप डाटासेट को विभिन्न विधियों से पॉप्यूलेट कर सकते हैं-

1. जब आप डाटा विजार्ड जैसे डिजायन टाइम टूल का उपयोग कर डाटासेट का निर्माण करते हैं तो TableAdapter के Fill मेथड को कॉल करते हैं। TableAdapters डिफॉल्ट Fill मेथड के साथ बनते हैं लेकिन आप इसका नाम बदल भी सकते हैं।

2. DataAdapter के Fill मेथड को कॉल करके भी डाटासेट को पॉप्यूलेट कर सकते हैं।

3. आप DataRow ऑब्जेक्ट बनाकर तथा उन्हें टेबल के DataRowCollection संकलन से जोड़कर भी डाटासेट के टेबल को मैनुअल ढंग से पॉप्यूलेट कर सकते हैं। आप लेकिन इसे रन टाइम में ही कर सकते हैं। आप DataRowCollection संकलन को डिजायन समय में सेट नहीं कर सकते हैं।

4. आप डाटासेट में एक्स.एम.एल. डॉक्यूमेण्ट या स्ट्रीम को पढ़ सकते हैं।

5. एक डाटासेट के विषय-वस्तु को दूसरे के साथ मिला/कॉपी कर सकते हैं। यह स्थिति तब उपयोगी हो सकती है जब आपके एप्लिकेशन में विभिन्न स्रोतों (यथा विभिन्न एक्स.एम.एल. वेब सेवाएँ) से डाटासेट्स प्राप्त होते हैं। परन्तु उन्हें एक सिंगल डाटासेट में मिलाने (consolidation) की आवश्यकता पड़ती है। 6. एक DataTable के विषय-वस्तु को दूसरे से कॉपी करके भी डाटासेट को पॉप्यूलेट कर सकते हैं।

डाटा एडाप्टर (DataAdapter)

DataAdapter का उपयोग डाटा सोर्स से डाटा को प्राप्त करने तथा डाटासेट के अंदर टेबलस को पॉप्यूलेट (populate) करने में होता है। DataAdapter की डाटा सेट में किये गये बदलाव को डाटा सोर्स में सुरक्षित किया जाता है। DataAdapter डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर के Connection ऑब्जेक्ट का उपयोग डाटा सोर्स से कनेक्ट करने में होता है। तथा यह डाटा सोर्स से डाटा प्राप्त करने तथा डाटा सोर्स में बदलाव को अपडेट करने के लिए कमाण्ड (command) ऑब्जेक्ट का उपयोग करता है।

डॉट नेट फ्रेमवर्क में सम्मिलित प्रत्येक डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का एक DataAdapter ऑब्जेक्ट होता है। ओ.एल. ई.डी.बी. (OLE DB) के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर में एक OleDbDataAdapter ऑब्जेक्ट शामिल होता है। एस. क्यू.एल. सर्वर के लिए डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर SqlDataAdapter ऑब्जेक्ट शामिल करता है। ओ.डी.बी.सी. के लिए डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर में OdbcDataAdapter शामिल होता है तथा ऑरकल के लिए डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर में Oracle DataAdapter ऑब्जेक्ट होता है।

1- OleDbData Adapter क्लास – Ole DhDataAdapter क्लास डाटा कमाण्ड्स के एक सेट तथा डाटाबेस कनेक्शन को व्यक्त करता है जिसका उपयोग डाटासेट को भरने तथा डाटा सोर्स को अपडेट करने में होता है। Ole DhDataAdapter डाय सेट तथा डाटा स्रोत के मध्य डाटा को प्राप्त करने तथा सुरक्षित करने हेतु एक संतू का कार्य करता है। OleDbDataAdapter Fill का उपयोग कर यह सेतु उपलब्ध करता है जो DataSet में डाटा स्रोत से डाटा को लोड करता है तथा Update का उपयोग कर डाटासेट में हुए बदलाव को डाटा सोर्स में वापस अपडेट करता है।

जब Ole DhDataAdapter किसी DataSet को भरता है तब यह उपयुक्त टेबल तथा कॉलम का निर्माण लौटाए गये डाटा के लिए करेगा यदि वे पहले से बने हुए नहीं है। किन्तु प्राइमरी की सूचना इम्लिसिटलि बने स्केमा (implicitly created schema) में शामिल नही होते जब तक की MissingSchemaAction प्रॉपर्टी को AddWithKey सेट नही किया गया हो , आप OleDbDataAdapter का उपयोग DataSet का स्केमा प्राइमरी की सूचना सहित बनाने में FillSchema का उपयोग कर इसे डाटा के साथ भरने से पहले कर सकते हैं।

यहाँ ध्यान दें कि MSDataShape प्रोवाइडर सहित कई ओ.एल.ई.डी.बी. प्रोवाइडर्स आधार टेबल अथवा प्राइमरी की सूचना रिटर्न नहीं करते हैं। अत: OleDbDataAdapter किसी भी बनाए गए DataTable पर PrimaryKey को सटिक रूप से सेट नहीं कर सकता है। उन परिस्थितियों में DataSet में टेबल के लिए आपको एक्स्प्लीसिटली प्राइमरी की स्पष्ट करना चाहिए।

OleDbDataAdapter में SelectCommand, InsertCommand, Delete Command, UpdateCommand तथा TableMappings प्रॉपर्टी को शामिल कर डाटा के लोडिंग तथा अपडेटिंग को सहज बनाता है। जब आप OleDbDataAdapter का एक इनस्टैन्स बनाते हैं तब प्रॉपर्टी उनके आरम्भिक मान को सेट करता है।

निम्नलिखित कोड OleDbCommand, OleDbDataAdapter तथा OleDbConnection का उपयोग एक्सेस डाटा सोर्स से रिकार्ड का चयन करने के लिए तथा चयनित पंक्तियों के साथ DataSet को पॉप्यूलेट करने के लिए करता है। फिर भरा हुआ (filled) DataSet वापस होता है। इस कार्य को पूरा करने के लिए मेथड को इनिशिअलाइजड डाटासेट, कनेक्शन स्ट्रिंग तथा क्वेरी स्ट्रिंग पास कराया जाता है जो एक SQL SELECT स्टेटमेण्ट है।

Public Function CreateDataAdapter(ByVal SelectCommand As_
String, ByVal connection As OleDbConnection) As OleDbDataAdapter
Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(selectCommand, connection)
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
‘ Create the commands [कमाण्ड्स का निर्माण करता है।]
adapter.InsertCommand = New OleDbCommand_
“INSERT INTO Customers (CustomerID, Company Name)” & “VALUES (?, ?)”)
adapter.UpdateCommand = New OleDbCommand (_
“UPDATE Customers SET CustomerID = ?, CompanyName =?”_
& “WHERE CustomerID = ?”)
adapter.DeleteCommand = New OleDbCommand(_
“DELETE FROM Customers WHERE CustomerID = ?”)
‘ Create the parameters (पैरामीटर का निर्माण करता है)
adapter.InsertCommand.Parameters.Add(“@CustomerID”, OleDbType.Char, 5, “CustomerID”)
adapter.InsertCommand.Parameters.Add(“@CompanyName”,
adapter.UpdateCommand.Parameters.Add(“@CustomerID”,
adapter.UpdateCommand.Parameters.Add(“@CompanyName”,_
oldDbType.VarChar, 40, “Company Name”)
adapter.UpdateCommand.Parameters.Add(“@oldCustomerID”,
OleDbType. VarChar, 40, “CompanyName”)
OleDbType. Char, 5, “CustomerID”)
OldDbType.Char, 5, “CustomerID”).SourceVersion = DataRowVersion.Original)
adapter.Delete Command.Parameters.Add(“@CustomerID”,
OldDbType.Char, 5, “CustomerID”).Source Version = DataRowVersion.Original
Return adapter 

End Function

2- SqlDataAdapter क्लास – SqiDataAdapter क्लास डाटा कमाण्ड्स तथा डाटाबेस कनेक्शन के सेट को व्यक्त करता है जिसका उपयोग डाटासेट को भरने तथा एस. क्यू. एल. सर्वर डाटाबेस अपडेट करने में होता है। इस क्लास को इनहेरिट नहीं किया जा सकता है।

SqiDataAdapter डाटा को प्राप्त करने तथा सुरक्षित करने में DataSet तथा एस. क्यू. एल. सर्वर के बीच एक सेतु का कार्य करता है। SqiDataAdapter यह सेतु Fill को मैप (map) कर उपलब्ध कराता है जो DataSet में डाटा का बदलाव कर डाटा सोर्स के डाटा के साथ मिलाता है तथा Update डाटा सोर्स के डाटा में बदलाव कर डाटासेट के डाटा के साथ इसे मिलान करता है। इसके लिए डाटा सोर्स के बदले में उपयुक्त Transact-SQL स्टेटमेण्ट्स का उपयोग होता है।

जब SqDataAdapter डाटासेट को भरता है तब यह रिर्टन्ड डाटा के लिए आवश्यक टेबल तथा कॉलम का निर्माण करता है यदि ये पहले से बने नहीं होते हैं। किन्तु प्राइमरी की सूचना तब तब इम्प्लीसिटली बने स्केमा में शामिल नहीं होता जब तक कि Missing Schema Action प्रॉपर्टी AddWithKey सेट न हो। आप SqiDataAdapter से प्राइमरी की सूचना सहित DataSet का स्केमा बनवा सकते हैं परन्तु यह FillSchema का उपयोग कर उस स्केमा को डाटा के साथ फील (fill) करने से पहले होता है।

SqiDataAdapter SqlConnection तथा SqlCommand के मिलकर उपयोग होता है जो एस.क्यू.एल. सर्वर डाटाबेस से जुड़ने के समय इसकी परफॉरमेन्स को बढ़ाता है।

SqlDataAdapter SelectedCommand, InsertCommand, DeleteCommand, UpdateCommand तथा TableMappings प्रॉपर्टी सम्मिलित होते हैं जो डाटा के लोडिंग तथा अपडेटिंग को आसान बनाता है। SqiDataAdapter के इन्स्टैनस बनने पर read/write प्रॉपर्टी अपने प्रारम्भिक मानों के साथ सेट हो जाता है।

निम्नलिखित उदाहरण SqlCommand, SqlDataAdapter तथा SqlConnection का उपयोग डाटाबेस से रिकॉर्ड का चयन करने तथा डाटासेट को चयनित पंक्तियों के साथ पॉप्यूलेट करने में होता है। भरा हुआ (filled) डाटासेट उसके बाद वापस होता है। इसको पूरा करने के लिए मेथड को एक इनिशियअलाइज् डाटासेट, एक कनेक्शन स्ट्रिंग तथा एक क्वेरी स्ट्रिंग पास किया जाता है जो एक Transact-SQL SELECT स्टेटमेण्ट होता है-

Public Function SelectRows(ByVal dataSet As_
DataSet, ByVal connectionString As String_
ByVal queryString As String) As DataSet
Using connection As New SqlConnection(connectionString)
Dim adapter As New SqlDataAdapter()
adapter.SelectCommand = New SqlCommand (queryString.connection)
adapter.Fill(dataSet)
Return dateSet
End Using
End Function

3 OdbcDataAdapter क्लास – OdbcDataAdapter क्लास डाटा कमाण्ड्स, डाटा सोर्स कनेक्शन के एक सेट को व्यक्त करता है जिसका उपयोग डाटासेट को भरने तथा डाटा सोर्स को अपडेट करने में होता है। इस क्लास को इनहेरिट नहीं किया जा सकता है।

OdbcDataAdapter डाटासेट तथा डाटा सोर्स के मध्य डाटा को प्राप्त करने तथा सुरक्षित करने में एक सेतु का कार्य करता है। OdbcDataAdapter इसके लिए Fill तथा Update का उपयोग करता है। Fill का उपयोग सोर्स से डाटा को डाटासेट में लोड करने के लिए तथा Update का उपयोग डाटासेट से हुए बदलाव को डाटा सोर्स में वापस सुरक्षित करने के लिए होता है।

OdbcDataAdapter क्लास डाटासेट तथा डाटासोर्स के मध्य डाटा को प्राप्त करने तथा उसे सुरक्षित करने के लिए एक सेतु का कार्य करता है। OdbcDataAdapter इसके लिए Fill तथा Update मेथड उपलब्ध कराता है। Fill डाटा सोर्स से डाटा को डाटा सेट में लोड करने का कार्य करता है तथा Update डाटा सेट में हुए बदलाव को डाटा सोर्स में सुरक्षित करता है।

जब Odbe DataAdapter डाटासेट को भरता है तब यह रिर्टन्ड डाटा के लिए टेबल तथा कॉलम का निर्माण करता है यदि वे पहले से नहीं बने होते हैं किन्तु प्राइमरी की सूचना तब तक इम्प्लीसिटली बने स्केमा से जोड़ा नहीं जाता जब तक कि Missing SchemaAction प्रॉपर्टी AddWithKey सेट न हो। आप odbcDataAdapter से प्राइमरी की सूचना सहित DataSet का स्केमा बनवा सकते हैं परन्तु यह FillSchema का उपयोग कर उस स्केमा को डाटा के साथ फील (fill) करने से स्केमा को डाटा के साथ फील (fill) करने से पहले होता है।

नोट: जब आप उस डाटा सोर्स में Fill मेथड को कॉल करते हैं जिसमें प्राइमरी की कॉलम न हो तब Odbe DataAdapter प्राइमरी की में अनोखा कनस्ट्रेण्ट कॉलम (unique constraint column) को प्रोमोट (promote) करने का प्रमाण करता है। इस प्रक्रिया में OdbcDataAdapter यूनिक कंस्ट्रेण्ट को नॉट नलेबल (not nullable) की तरह चिन्हित करता है। यह आचरण तब तक कार्य करता है जब तक कि यूनिक कंस्ट्रेण्ट कॉलम में नल (nuli) मान न आ जाय। यदि कोई नल वैल्यू होता है Fill मेथड कंस्ट्रेण्ट अवहेलना (constraint violation) में असफल हो जाता है। ऐसी स्थिति से बचने के लिए आप यूनिक कंस्ट्रेण्ट कॉलम में नल मानों की अनुमति दें।

Odbc DataAdapter SelectCommand, Insert Command, DeleteCommand, UpdateCommand a TableMappings जैसे प्रॉपर्टी शामिल होते हैं जो डाटा को लोड करना तथा अपडेट करना आसान बनाता है। निम्नलिखित कोड OdbeCommand, OdbcDataAdapter तथा OdbcConnection का उपयोग कर रिकॉर्ड का चयन करता है तथा चयनित पंक्तियों के साथ डाटासेट को पॉप्यूलेट (populate) करता है-

Public Function GetDataSetFromAdapter(
ByVal dataset As DataSet, ByVal connectionString As String,__
ByVal queryString As String) As DataSet
Using connection As New OdbcConnection(connectionString)
Dim adapter As New OdbcDataAdapter (query String, Connection)
Try
connection.Open ()
adapter.Fill(dataSet)
Catch ex As Exception
Console. WriteLine (ex. Message)
End Try
End Using
Return dataSet
End Function

नोट : स्थानीय ओ.डी.बी.सी. ड्राइवर की सीमाओं के बजाय जब आप FillSchema को कॉल करते हैं तब हमेशा एक ही DataTable लौटाता है। यह तब भी सत्य होता है जब आप SQL बैच स्टेटमेण्ट एक्जिक्यूट करते हैं जिसमें एक से अधिक DataTable ऑब्जेक्ट आपेक्षित होता है।

4- OracleDataAdapter क्लास – OracleDataAdapter क्लास डाटा कमाण्ड्स तथा डाटाबेस कनेक्शन के एक सेट को व्यक्त करता है जिसका उपयोग डाटासेट को फील करने तथा डाटाबेस को अपडेट करने में होता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। OracleDataAdapter डाटासेट तथा डाटाबेस के मध्य डाटा को प्राप्त करने तथा सुरक्षित करने हेतु एक सेतु का कार्य करता है।

OracleDataAdapter इस कार्य के लिए दो मेथड Fill तथा Update उपलब्ध कराता है। Fill मेथड का उपयोग डाटाबेस से डाटा को डाटासेट में लोड करता है तथा Update डाटयसेट में हुए बदलाव को वापस डाटाबेस में सुरक्षित करता है।

OracleDataAdapter जब डाटासेट को फील करता है तब यह रिटर्न्ड डाटा के लिए आवश्यक टेबलस तथा कॉलम्स का निर्माण करता है यदि वे पहले से बने नहीं होते हैं। किन्तु यहाँ भी इम्प्लीसिटली बने स्केमा में तब तक प्राइमरी की सूचना सम्मिलित नहीं होता है जब तक कि MissingSchemaAction प्रॉपर्टी AddWithKey सेट न हो। आप OracleDataAdapter का उपयोग प्राइमरी की सूचना के साथ डाटासेट स्केमा को बनाने में FillSchema का उपयोग कर डाटा को फील (fill) करने से पहले कर सकते हैं। 

आपने इस पूरे पार्ट 1 से 4 तक में क्या सीखा (What Did You Learn Today)

  • डाटाबेस का प्रबंधन आज के कम्प्यूटर की सर्वोत्तम उपयोगिता है तथा कम्प्यूटर इसके लिए सर्वप्रथम आवश्यकता है। किसान, दुकानदार कम्पनी, एअरलाइन्स सब के सब अपने डाटा को रखने के लिए कम्प्यूटर का उपयोग करते हैं। सूचना मिलीसेकण्ड (milisecoods) में चाहिए
  • डाटाबेस प्रबंधन का इस अनुसार मूल कार्य अव्यवस्थित डाटा का प्रबंधन कर उन्हें सूचता में परिवर्तित करता है। डाटाबेस कुछ मेगाबाइट से लेकर सैकड़ों टेराबाइट तक हो सकता है। डाटाबेस छोटा हो या बड़ा हो उसके डिजायन करने की तकनीक तथा सिद्धांत एक समान होते हैं। इसमें तालिका, फील्ड रिकॉर्ड इत्यादि होते हैं।
  • तालिका या टेबल डाय का एक आयाताकार ऐरे (ectangular array) होता है। तालिका का प्रत्येक कॉलम फील्ड (field) कहा जाता है। एक फील्ड में एक ही प्रकार के डाटा होते हैं। तालिका का प्रत्येक पंक्ति एक रिकॉर्ड (record) होता है। एक रिकॉर्ड में दूसरे पंक्ति की तरह ही समान सूचना संगृहीत होते हैं।
  • डायबेस या रिलेशनल डाटाबेस एक या एक से अधिक तालिकाओं का संकलन होता है। डाटाबेस या रिलेशनल डाटाबेस जिस सॉफ्टवेयर के द्वारा बनाये जाते हैं, वह सॉफ्टवेयर डाटाबेस प्रबंधन सॉफ्टवेयर कहा जाता है।
  • आज बाजार में कई डाटाबेस प्रबंधन सॉफ्टवेयर उपलब्ध हैं। उनमें एक्सेस, ओरेकल, एस. क्यू एल. सर्वर कुछ प्रचलित नाम हैं।
  • वी.बी. डॉट इन सॉफ्टवेयर में बनाये गये डाटाबेस का प्रबंधन तथा विश्लेषण करने के लिए फीचर उपलब्ध कराता है। वी.बी. डॉट नेट में एक शक्तिशाली डाटा व्यूअर है, जिसका उपयोग डाटाबेस के सभी भागों को ब्राउज़ करने में किया जा सकता है।
  • प्रोजेक्ट में उपयोग किया गया डाटाबेस प्रोजेक्ट के bin फोल्डर में उपलब्ध होता है।
  • एक अच्छे तालिका की खास बात यह होती है कि उसमें एक ऐसा फील्ड या फील्ड का एक ऐसा सेट होता है जो उस तालिका के प्रत्येक रिकॉर्ड को एक अनोखा पहचान उपलब्ध कराता है। इस फील्ड या फील्ड के सेट को प्राइमरी की कहा जाता है।
  • फॉरेन की की सहायता से वी.बी. डॉट नेट एक अर्थपूर्ण ढंग से रिलेशनल डाटाबेस में दो तालिकाओं को लिंक करता है।
  • एडू (ADO) एक माइक्रोसॉफ्ट प्रौद्योगिकी है जिसका पूर्ण रूप एक्टिवएक्स डाटा ऑब्जेक्ट्स (ActiveX Data objects) होता है। इसको माइक्रोसॉफ्ट ने अक्टूबर 1996 में परिचित किया था। यह कॉम्पोनेण्ट ऑब्जेक्ट मॉडल (Component Object Model) का एक सेट है जो किसी डाटाबेस से डाटा को एक्सेस करने हेतु प्रोग्रामिंग इंटरफेस उपलब्ध कराता है।
  • एडू को रिमोट डाटा ऑब्जेक्ट्स (Remote Data Objects) तथा डाटा एक्सेस ऑब्जेक्ट (Data Access Object) का उत्तरवर्ती (successor) समझा जाता है।
  • एडू डॉट नेट लायब्रेरी का एक संकलन है जिसका उपयोग माइक्रोसॉफ्ट एस. क्यू. एल. सर्वर, माइक्रोसॉफ्ट सर्वर, ऑरेकल, एस. क्यू. एल., माइक्रोसॉफ्ट एक्सेल इत्यादि जैसे विभिन्न संसाधनों का उपयोग करते हुए शक्तिशाली डाटाबेस के निर्माण में होता है।
  • एडू डॉट नेट एप्लिकेशन में डाटाबेस के फीचरों को उपयोग करने के अलावा आप एक्स.एम.एल. के लाभ भी पूरी तरह से प्राप्त कर सकते हैं क्योंकि एक्स.एम.एल. DataSet क्लास के द्वारा पूरी तरह से सपोर्ट किया जाता है।
  • एडू डॉट नेट में असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) का प्रयोग होता है।
  • डाटासेट डाटा एक्सेस करने का सबसे सामान्य विधि है क्योंकि यह असंयोजित डाटा आर्किटेक्चर को लागू करता है।
  • एडू डॉट नेट में एक्स. एम. एल. डाटा स्थानांतरण का एक बुनियादी फॉरमेट है। डाटा डाटाबेस से डाटासेट में स्थानांतरित होता है तथा डाटासेट से एक्स. एम. एल. का प्रयोग कर अन्य कम्पोनेन्ट स्थानांतरित होता है।
  • डाटाबेस पर सभी क्रियाएँ डाटा कमाण्ड के माध्यम से होता है। डाटा कमाण्ड एक एस. क्यू. एल. स्टेटमेण्ट या फिर एक संग्रहीत प्रोसीजर हो सकता है। डाटा कमाण्ड को एक्जिक्यूट कर आप डाटाबेस से डाटा को प्राप्त कर सकते हैं, डाटा प्रविष्ट कर सकते हैं, डाटा मिटा सकते हैं या उसमें संशोधन कर सकते हैं।
  • एस. क्यू. एल. सर्वर अथवा माइक्रोसॉफ्ट एस. क्यू. एल. सर्वर का उपयोग मुख्य रूप से कम्प्यूटर डाटाबेस को बनाने तथा उन्हें मेनटेन करने में होता है। इसकी सहायता से आप यूजर ग्राफिकल यूजर इंटरफेस का निर्माण कर सकते हैं। इसीलिए इसे बैक-एण्ड सॉफ्टवेयर कहा जाता है तथा कोई भी एप्लिकेशन बैक-एण्ड और फ्रण्ट-एण्ड का सम्मिश्रण होता है।
  • सर्वर एक्स्प्लोरर विजुअल स्टूडियो डॉट नेट का ऐसा टूल है जिसकी सहायता से आप अपने एप्लिकेशन को विभिन्न प्रकार के डाटा स्रोतों के साथ जोड़ सकते हैं।
  • सर्वर एक्स्प्लोरर को स्क्रीन पर प्रकट करने के लिए View मेन्यू को क्लिक करें तथा Server Explorer का चयन करे। या फिर CTRL+ALT+S को की-बोर्ड से दबाएँ।
  • DataTable ऑब्जेक्ट किसी सारणी के विषय-वस्तु को आयताकार ऐरे में रखता है। डाटा टेबल द्वि-विमीय की तरह होता है जिसमें पंक्तियाँ तथा कॉलम होते हैं।
  • आपने अब तक जाना कि डाटाबेस से सूचना लेकर हम उन्हें टेक्स्ट बॉक्स तथा लिस्ट बॉक्स में डिस्पले कैसे करते हैं। वी. बी. डॉट नेट में इस कार्य के लिए एक विशेष कण्ट्रोल है जिसे हम डाटाग्रिडव्यू (DataGridView) कन्ट्रोल के नाम से जानते हैं।
  • डायग्रिडव्यू कन्ट्रोल टेबल फॉरमेट में डाटा को डिस्प्ले करने के लिए उपयोग में लाया जाता है। डाटाग्रिडव्यू कन्ट्रोल
  • डाटयग्रीडव्यू का डिफॉल्ट अपिअरेन्स सामान्य (plain) होता है। आप इसे अपने अनुसार एक विशेष स्टाइल दे सकते हैं। इसके लिए कई प्रॉपर्टी होते जिन्हें आपको सेट करना होता है।
  • BorderStyle डाटाग्रीडव्यू का बॉर्डर स्टाइल सेट करता है।
  • CellBorderStyle डायग्रीडव्यू के सेल बॉर्डर स्टाइल को सेट करता है। इसमें आप Custom को छोड़कर कोई भी स्टाइल चुन सकते हैं।
  • कनेक्शन ऑब्जेक्ट लिंक को सोर्स डाटाबेस के साथ व्यवस्थित करता है। इसमें सबसे ज्यादा उपयोग होने वाला प्रोपर्टी ConectionString है जिसमें डाटाबेस को ढूंढने के लिए आवश्यक सूचना होती है। इसके महत्वपूर्ण मेथड Open तथा Close होते हैं। इस डॉट नेट के साथ कार्य करते समय दो प्रमुख प्रकार के कनेक्शन ऑब्जेक्ट यथा OleDbConnection तथा SqlConnection होते हैं।
  • कमाण्ड ऑब्जेक्ट कई Execute मेथड को व्यक्त करता है जिसका उपयोग कर आप इच्छित कार्य कर सकते हैं। डाटा के स्ट्रीम (प्रवाह) के रूप में परिणामों को लौटाते समय ExecuteReader का उपयोग DataReader ऑब्जेक्ट को लौटाने में होता है। ExecuteScalar का उपयोग कर सिंगलनन (Singleton) मान लौटाते हैं। इसी प्रकार ExecuteNonQuery का उपयोग कर वैसे कमाण्ड को एक्जिक्यूट करते हैं, जो पंक्तियों को रिटर्न नहीं करते हैं।
  • OleDbCommand क्लास एस. क्यू. स्टेटमेन्ट या स्टोरड प्रॉसीजर को व्यक्त करता है जो एक डाटा सोर्स के बदले एक्जिक्यूट करता है।
  • SqlCommand क्लास Transact-SQL स्टेटमेन्ट अथवा संग्रहित प्रोसीजर को व्यक्त करता है जो एस. क्यू. एल. सर्वर डाटाबेस के बदले में एक्जिक्यूट होता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। SqlCommand के इन्स्टैन्सेज (instances) के बनने के पश्चात् read/write प्रोपर्टी उनके प्रारम्भिक मान में सेट हो जाता है।
  • OdbcCommand क्लास डाटा सोर्स के बदले एक्जिक्यूट करने हेतु एस.क्यू.एल. स्टेटमेण्ट अथवा संग्रहीत प्रॉसीजर को व्यक्त करता है। इस क्लास को इनहेरिट नहीं किया जा सकता है।
  • OracleCommand क्लास डाटा सोर्स के बदले एक्जिक्यूट करने हेतु एस. क्यू. एल. स्टेटमेण्ट अथवा संगृहीत प्रोसीजर को व्यक्त करता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। Oracle Command डाय के बदले कमाण्ड को एक्जिक्यूट करने के लिए कई मेथड उपलब्ध कराते हैं।
  • DataAdapter का उपयोग डाटा सोर्स से डाटा को प्राप्त करने तथा डाटासेट के अंदर टेबलस को पॉप्यूलेट (populate) करने में होता है। DataAdapter की डाटा सेट में किये गये बदलाव को डाटा सोर्स में सुरक्षित भी किया जाता है। DataAdapter डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर के Connection ऑब्जेक्ट का उपयोग डाटा सोर्स से कनेक्ट करने में होता है। तथा यह डाटा सोर्स से डाटा प्राप्त करने तथा डाटा सोर्स में बदलाव को अपडेट करने के लिए कमाण्ड (command) ऑब्जेक्ट का उपयोग करता है।
  • OleDbDataAdapter क्लास डाटा कमाण्ड्स के एक सेट तथा डाटाबेस कनेक्शन को व्यक्त करता है जिसका उपयोग डाटासेट को भरने तथा डाटा सोर्स को अपडेट करने में होता है। 
  • SqlDataAdapter क्लास डाटा कमाण्ड्स तथा डाटाबेस कनेक्शन के सेट को व्यक्त करता है जिसका उपयोग डाटासेट को भरने तथा एस. क्यू. एल. सर्वर डाटाबेस अपडेट करने में होता है। इस क्लास को इनहेरिट नहीं किया। डाटासेट को भरने तथा डाटा सोर्स को अपडेट करने में होता है। इस क्लास को इनहेरिट नहीं किया जा सकता है।
  • OdbcDataAdapter क्लास डाटा कमाण्ड्स, डाय सोर्स कनेक्शन के एक सेट को करता है जिसका उपयोग उपयोग डाटासेट को फील करने तथा डाटाबेस को अपडेट करने में होता है। इस क्लास को इनहेरिट नहीं किया।

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | Database Programming With ADO.NET – Best Info

0
डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट परिचय (Introduction)ए.डी.यू. या एडू डॉट नेट लायब्रेरी का वह संकलन है जो आपको कई डाटाबेस प्रणालियों का इकट्ठा एक्सेस विजुअल स्टूडिया डॉट नेट में उपलब्ध कराता है। डाटाबेस प्रणालियों में आप किसी भी डाटाबेस प्रणाली यथा एस. क्यू.एल., अरिकल का उपयोग कर अपने एप्लिकेशन में डाटाबेस को जोड़ सकते हैं। इस अध्याय में हम आपके साथ एडू डॉट नेट की चर्चा करेंगे। एडू डॉट नेट असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) पर आधारित है। संयोजित डाटा आर्किटेक्चर के बारे में भी इस अध्याय में आपको बताया गया है।

इस पार्ट-3 में हम जानेगे :- डाटाबेस ऑब्जेक्ट तथा एडू डॉट नेट (Dabase Objects and ADO.Net), कनेक्शन ऑब्जेक्ट (Comection Object), कमाण्ड ऑब्जेक्ट (Command Object), कमाण्ड के साथ कार्य करना (Writing with Commands)

डाटाबेस ऑब्जेक्ट तथा एडू डॉट नेट (Dabase Objects and ADO.Net)

इस खण्ड में हम विजुअल बेसिक कोड से एडू डॉट नेट ऑब्जेक्ट्स के साथ सीधे-सीधे कार्य कर रहे हैं। इसके लिए हम डाटाबेस कनेक्शन, डाटा अडरेटर, डाटा टेबल, डाटाबेस इत्यादि का निर्माण करते हैं। इस खण्ड में हम यह देखेंगे कि किस प्रकार टेबल बनाते हैं तथा उन्हें डाटाबेस में रखते हैं।

हम यहाँ यह भी देखेंगे कि किस प्रकार अपना खुद का कनेक्शन ऑपरेटर बनाकर डाटाबेस को कनेक्ट करते हैं, कैसे डाटा अडरेटर से एस. क्यू. एम. स्टेटमेन्ट्स रखते हैं तथा किस प्रकार डाटाबेस के मध्य डाटा रिलेशन्स स्थापित करते हैं। डाटाबेस के साथ मुख्य रूप से कार्य करने के लिए निम्नलिखित ऑब्जेक्ट की आवश्यकता होती है :

  1. कनेक्शन ऑब्जेक्ट
  2. कमाण्ड ऑब्जेक्ट
  3. डाटा अडरेटर ऑब्जेक्ट
  4. डाटा सेट ऑब्जेक्ट

कनेक्शन ऑब्जेक्ट (Comection Object)

कनेक्शन ऑब्जेक्ट लिंक को सोर्स डाटाबेस के साथ व्यवस्थित करता है। इसमें सबसे ज्यादा उपयोग होने वाला प्रोपर्टी ConectionString है जिसमें डाटाबेस को ढूंढने के लिए आवश्यक सूचना होती है। इसके महत्वपूर्ण मेथड Open तथा Close होते हैं। इस डॉट नेट के साथ कार्य करते समय दो प्रमुख प्रकार के कनेक्शन ऑब्जेक्ट यथा OleDbConnection तथा SqlConnection होते हैं।

OleDbConnection ऑब्जेक्ट ओ. एल. ई. डी. बी. डाटा प्रोवाइडर के कनेक्शन को सपोर्ट करता है। व्यवहारिक रूप से आप OLE DB कनेक्शन का उपयोग माइक्रोसॉफ्ट एस. क्यू. एल सर्वर के अतिरिक्त सभी डाटा प्रोवाइडर के साथ उपयोग कर सकते हैं। SqlConnection ऑब्जेक्ट एस. क्यू. एल. सर्वर डाटा सॉर्स साथ कनेक्शन को सपोर्ट करता है।

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग तथा कार्य | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

कमाण्ड ऑब्जेक्ट (Command Object)

कमाण्ड ऑब्जेक्ट कई Execute मेथड को व्यक्त करता है जिसका उपयोग कर आप इच्छित कार्य कर सकते हैं। डाटा के स्ट्रीम (प्रवाह) के रूप में परिणामों को लौटाते समय ExecuteReader का उपयोग DataReader ऑब्जेक्ट को लौटाने में होता है। ExecuteScalar का उपयोग कर सिंगलनन (Singleton) मान लौटाते हैं। इसी प्रकार ExecuteNonQuery का उपयोग कर वैसे कमाण्ड को एक्जिक्यूट करते हैं, जो पंक्तियों को रिटर्न नहीं करते हैं। 

कमाण्ड ऑब्जेक्ट्स का उपयोग जब आप संग्रहित प्रोसीजर के साथ करते हैं तब आप कमाण्ड ऑब्जेक्ट आप कमाण्ड के Parameters प्रॉपर्टी का उपयोग इनपुट तथा आउटपुट पैरामीटर को एक्सेस करने तथा मान को लौटाने में Command Type प्रोपर्टी Stored Procedure के साथ सेट कर सकते हैं। Stored Procedure के Command Type के साथ Execute Reader कॉल करते समय रिटर्न मान तथा आउटपुट पैरामीटर एक्सेसिबल तब तक नहीं होगा जब तक कि कर सकते हैं।

Parameters प्रॉपर्टी का उपयोग Execute मेथड को कॉल किए बगैर भी किया जा सकता है। किन्तु DataReader बंद न हो। निम्नलिखित कोड एस. क्यू एल. सर्वर के Northwind डाटाबेस से कैटेगरी की सूची (List of Categories) रिटने करने हेतु कैसे SqlCommand ऑब्जेक्ट का निर्माण करते हैं यह दर्शाता है :
Dim command As SqlCommand = New SqlCommand.
(“SELECT Category ID Category Name FROM dbo. Categories”. nwind conn)

कमाण्ड के साथ कार्य करना (Writing with Commands)

डाटा सोर्स के साथ कनेक्शन स्थापित करने के बाद आप कमाण्ड्स को एक्जिक्यूट कर सकते हैं तथा Cornmand ऑब्जेक्ट का उपयोग कर डाटा सोर्स से परिणाम लौटा सकते हैं। आप Command कंस्ट्रक्ट का उपयोग कर कमाण्ड का निर्माण कर सकते हैं, जो एस. क्यू. एल स्टेटमेण्ट का ऐच्छिक ऑर्ग्यूमेन्स लेकर डाटा सोर्स, Connection ऑब्जेक्ट तथा Transaction ऑब्जेक्ट पर एक्जिक्यूट करता है।

आप Connection ऑब्जेक्ट के Create Command मेथड का उपयोग कर एक विशेष कनेक्शन के लिए कमाण्ड का निर्माण कर सकते हैं। Command ऑब्जेक्ट का एस. क्यू. एल. स्टेटमेन्ट पर क्वेरी किया जा सकता है तथा CommandText प्रोपर्टी का उपयोग कर संशोधित भी किया जा सकता है।

डॉट नेट फ्रेमवर्क में सम्मिलित प्रत्येक डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का एक Command ऑब्जेक्ट होता है। ओ. एल. ई . डी. बी. (OLE DB) के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर से OleDbCommand ऑब्जेक्ट होता है। एस. क्यू. एल. सर्वर के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का SqlCommand ऑब्जेक्ट होता है। ओ. डी. बी. सी. (ODBC) के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का OdbeCommand ऑब्जेक्ट होता है तथा ऑरकल (Oracle) के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का OracleCommand ऑब्जेक्ट होता है।

1- ओ. एल. ई. डी. बी कमाण्ड क्लास (OleDbCommand Class) – OleDbCommand क्लास एस. क्यू. स्टेटमेन्ट या स्टोरड प्रॉसीजर को व्यक्त करता है जो एक डाटा सोर्स के बदले एक्जिक्यूट करता है। जब OleDbCommand में निम्नलिखित मेथड होते हैं, जो डाटासोर्स पर कमाण्ड एक्जिक्यूट करता है।
ExecuteReader
ExecuteReader कमाण्ड को एक्जिक्यूट करता है, जो पंक्तियों को वापस करता है। ExecuteReader का तब परिणाम आपके इच्छानुसार नहीं हो सकता है जब आप SQL SET स्टेटमेन्ट जैसे कमाण्ड को एक्जिक्यूट करवाते हैं।
ExecuteNonQuery
ExecuteNonQuery SQL INSERT, DELETE, UPDATE तथा SET स्टेटमेन्ट जैसे कमाण्ड को एक्जिक्यूट करता है।
ExecuteScalar
ExecuteScalar सिंगल मान प्राप्त करता है। उदाहरण के लिए, डाटाबेस से कुल (aggregate) मान को प्राप्त करने के लिए इसका उपयोग किया जा सकता है।

आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा OleDbCommand ऑब्जेक्ट को रियूज कर सकते हैं। किन्तु आपको नये या पिछले कमाण्ड को एक्जिक्यूट करने के लिए OleDbDataReader को बंद करना आवश्यक होगा।

यदि कोई गम्भीर OleDbExecption OleDbCommand एक्जिक्यूट कर रहे मेथड के द्वारा जनित होता है तब OleDbConnection कनेक्शन बंद हो सकता है परन्तु उसे फिर से खोलकर उसके साथ कार्य किया जा सकता है। 
निम्नलिखित कोड OleDbCommand का उपयोग कर OleDbDataAdapter तथा OleDbConnection के साथ एक्सेस कनेक्शन डाटाबेस में पंक्तियों का चयन करता है। भरे गये (Filled) डाटासेट उसके बाद लौटता है। इसमें इनिशिअलाइजड डाटासेट है। स्ट्रिंग, क्वेरी स्ट्रिंग होता है, जो एक एस. क्यू. एल. स्टेटमेन्ट ही होता है तथा स्ट्रिंग सोर्स डाटाबेस टेबल का नाम है।

Public Sub ReadMyData (ByVal connectionString As String)
Dim Query String As String = “SELECT OrderID, CustomerID FROM ORDERS”
Using Connection As New OleDbConnection (connectionString)
Dim Command As New OleDbCommand (query String. Connection)
Connection.Open()
Dim reader As OleDbDataReader=command.ExecuteReader()
While reader. Read ()
Console. WriteLine (reader. GetInt32 (0). ToString U+ “.” + reader. GetString (1)

End While
reader. Close()
End Using
End Sub

2 एस. क्यू. एल. कमाण्ड क्लास (SqlCommand Class)
SqlCommand क्लास Transact-SQL स्टेटमेन्ट अथवा संग्रहित प्रोसीजर को व्यक्त करता है जो एस. क्यू. एल. सर्वर डाटाबेस के बदले में एक्जिक्यूट होता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। SqlCommand के इन्स्टैन्सेज (instances) के बनने के पश्चात् read/write प्रोपर्टी उनके प्रारम्भिक मान में सेट हो जाता है। SqlCommand के निम्नलिखित मेथड होते हैं, जो एस. क्यू. एल. सर्वर पर कमाण्ड को एक्जिक्यूट करने के लिए होता है –

BeginExecuteNonQuery – यह Transact-SQL स्टेटमेन्ट अथवा संग्रहित प्रोसीजर के असिंक्रोनस एक्जिक्यूशन को शुरू करता है, जो इस SqlCommad के द्वारा वर्णन किया जा सकता है जो सामान्यतः INSERT, DELETE, UPDATE तथा SET स्टेटमेन्ट्स जैसे कमाण्ड को एक्जिक्यूट करता है। BeginExecuteNonQuery के प्रत्येक कॉल को EndExecuteNoQuery कॉल के साथ ही होना चाहिए जो सामान्यतः एक अलग थ्रेड पर ऑपरेशन को समाप्त करता है।

BeginExecuteReader – BeginExecuteReader Transact SQL स्टेटमेन्ट अथवा संग्रहित प्रोसीजर के असिंक्रोनस एक्ज़िक्यूशन को शुरू करता है, एक या अधिक रिजल्ट सेट्स को प्राप्त करता है। जो इस SqlCommand के द्वारा वर्णित होता है तथा सर्वर BeginExecuteReader के प्रत्येक कॉल को EndExecuteReader कॉल के साथ ही होना चाहिए जो सामान्यतः एक अलग थ्रेड पर ऑपरेशन को समाप्त करता है।

BeginExecuteXmlReaderTransact-SQL स्टेटमेण्ट अथवा संगृहीत प्रोसीजर के असिंक्रोनस एक्जिक्यूशन को शुरू करता है जो इस SqlCommand के द्वारा वर्णन किया जाता है। BeginExecute XmlReader के प्रत्येक कॉल को EndExecuteXmlReader कॉल के साथ ही होना चाहिए जो सामान्यतः एक अलग थ्रेड पर ऑपरेशन को समाप्त करता है तथा XmlReader ऑब्जेक्ट लौटाता है।

ExecuteReader – ExecuteReader वैसे कमाण्ड को एक्जिक्यूट करता है जो पंक्तियों को लौटाते हैं। बेहतर परफॉरमेन्स के लिए ExecuteReader Transact-SQL sp_executeSql सिस्टम संग्रहीत प्रोसीजर का उपयोग कर कमाण्ड को इनवोक करता है। अत: ExecuteReader आपके इच्छानुसार हो सकता है परिणाम न दें यदि इसका उपयोग Transact-SQL SET स्टेटमेण्ट्स जैसे कमाण्ड को एक्जिक्यूट करने में हो। 

ExecuteNonQuery – Transact-SQL, INSERT, DELETE, UPDATE तथा SET स्टेटमेण्ट जैसे कमाण्ड को एक्जिक्यूट करता है।

ExecuteScalarडाटाबेस से सिंगल मान (उदाहरणार्थ पूर्ण मान) प्राप्त करने में होता है।

ExecuteXmlReader – Connection को CommandText भेजता है तथा XmlReader ऑब्जेक्ट का निर्माण करता है। आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा SqlCommand ऑब्जेक्ट को रिमूव कर सकते हैं किन्तु आपको नये या पिछले कमाण्ड को एक्जिक्यूट करने से पहले SqiDataReader बंद करना आवश्यक होगा।

यदि SqlCommand को एक्जिक्यूट कर रहे मेथड SqlException जनित करते हैं और यदि इसकी गम्भरता स्तर (severity level) 19 या कम हो तब तक SqlConnection चालू रहता है। जब गम्भीरता स्तर (severity level) 20 या अधिक होता है तब सर्वर सामान्यत: SqlConnection को बंद कर देता है। किन्तु यूजर कनेक्शन को दोबारा खोल सकते हैं तथा कनटीनयु (continue) कर सकते हैं।

निम्नलिखित उदाहरण एक SqlConnection, एक SqlCommand तथा एक SqiDataReader को बनाता है। यह उदाहरण पूरे डाटा को पढ़ता है इसे कंसोल में लिखता है। अंततः यह उदाहरण SqlConnection को बंद करता है।

Public Sub ReadOrderData (ByVal connectionString As String)
Dim query String As String = “SELECT OrderID, CustomerID FROM dbo.Orders;”
Using connection As New SqlConnection (connectionString)
Dim command As New SqlCommand (query String, connection)
connection.Open ()

Dim reader As SqlDataReader = command.ExecuteReader()
Try
While reader. Read ()
Console. WriteLine(String.Format(“{0}, {1}”, reader (0), reader (1)))

End While

Finally
reader.Close ()

End Try

End Using

End Sub

3- OdbcCommand क्लास – OdbcCommand क्लास डाटा सोर्स के बदले एक्जिक्यूट करने हेतु एस.क्यू.एल. स्टेटमेण्ट अथवा संग्रहीत प्रॉसीजर को व्यक्त करता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। इस क्लास के द्वारा डाटा सोर्स के बदले कमाण्ड्स को एक्जिक्यूट करने हेतु कई मेथड होते हैं।

ExecuteReader – उन कमाण्ड को एक्जिक्यूट करता है जो रो (rows) लौटाते हैं।
ExecuteNonQuery – SQL INSERT, DELETE, UPDATE तथा SET स्टेटमेण्ट जैसे कमाण्ड को एक्जिक्यूट करता है।

ExecuteScalar – डाटाबेस में एक सिंगल मान यथा कोई पूर्ण मान (aggregate value) प्राप्त करता है।

आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा OdbeCommand ऑब्जेक्ट को रियूज कर सकते हैं। किन्तु किसी नये कमाण्ड या पिछले कमाण्ड को एक्जिक्यूट करने से पहले OdbcDataReader को बंद करना आवश्यक होता है। यदि कमाण्ड के एक्जिक्यूशन के कारण कोई गम्भीर OdbcException यथा एस. क्यू. एल. सर्वर गम्भीरता स्तर 20 या अधिक उत्पन्न होता है तो OdbeConnection बंद हो सकता है। परन्तु यूजर इसे पुन: खोल कर कार्य कर सकता है।

निम्नलिखित कोड उदाहरण ExecuteReader मेथड तथा OdbcCommand क्लास का उपयोग OdbcDataReader तथा OdbcConnection क्लास के साथ टेबल से पंक्ति का चयन करने में उपयोग करता है-

Public Sub InsertRow(ByVal connectionString As String, ByVal insertSQL As String)
Using Connection As New OdbcConnection(connectionString)
Dim command As New OdbcCommand(insertSQL, connection)
insertSQL स्ट्रिंग में एक एस. क्यू. एल. स्टेटमेण्ट है।
जो सोर्स टेबल में एक नयी पंक्ति प्रविष्ट करता है।

Try
connection.Open() ‘कनेक्शन को शुरू करता है
Command.ExecutionNonQuery ) insert कमाण्ड को एक्जिक्यूट करता है
Catch ex As Exception
Console.WriteLine (ex.Message)
End Try

End Using ‘इसके बाद कनेक्शन स्वतः ही बंद हो जाता है।
End Sub

4- OracleCommand क्लासOracleCommand क्लास डाटा सोर्स के बदले एक्जिक्यूट करने हेतु एस. क्यू. एल. स्टेटमेण्ट अथवा संगृहीत प्रोसीजर को व्यक्त करता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। OracleCommand डाटा सोर्स के बदले कमाण्ड को एक्जिक्यूट करने के लिए कई मेथड उपलब्ध कराते हैं।

ExecuteReader – वैसे कमाण्ड को एक्जिक्यूट करता है जो पंक्तियाँ (rows) लौटाते हैं।

ExecuteOracleNonQuery- कनेक्शन के बदले एस. क्यू. एल. स्टेटमेण्ट को एक्जिक्यूट करता है तथा प्रभावित पंक्तियों की संख्या लौटाता है।

ExecuteNonQuery – SQL INSERT, DELETE, UPDATE तथा SET स्टेटमेण्ट्स जैसे कमाण्ड को एक्जिक्यूट करता है।
ExecuteScalar – सिंगल मान (यथा पूर्ण मान) को डॉट नेट फ्रेमवर्क डाटा टाइप के रूप में डाटाबेस से पुनः प्राप्त करता

ExecuteOracleScalar – सिंगल मान (यथा पूर्ण मान) को ऑरेकल विशिष्ट डाटा टाइप के रूप में डाटाबेस से लौटाता है। आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा OracleCommand ऑब्जेक्ट को रियूज कर सकते हैं। यदि कमाण्ड के एक्जिक्यूशन के कारण कोई गम्भीर OracleException उत्पन्न होता है तो OracleConnection बंद हो सकता है। परन्तु यूजर इसे पुनः खोलकर कार्य शुरू कर सकता है।

नोट : अन्य डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर (एस.क्यू.एल. सर्वर, ओ.एल.ई.डी.बी. तथा ओ.डी.बी.सी.) के Command ऑब्जेक्ट के विपरीत OracleCommand ऑब्जेक्ट CommandTimeout प्रॉपर्टी को सपोर्ट नहीं करता है। कमाण्ड टाइमआउट को सेट करने का यहाँ कोई प्रभाव नहीं होता है तथा लौटाया गया मान शून्य होता है। 

निम्नलिखित कोड उदाहरण OracleCommand के ExecuteReader मेथड को OracleDataReader तथा Oracle Connection
के साथ उपयोग कर टेबल से पंक्तियों का चयन करता है।

Public Sub ReadMyData(ByVal connectionString As String)
Dim query String As String = “SELECT EmpNo DeptNo FROM Scott. Emp”
Using connection As New OracleConnection(connectionString)
Dim command As New OracleCommand(queryString, connection)
connection.Open()
Dim reader As OracleDataReader = command.ExecuteReader()
Try
While reader.Read()
Console. WriteLine (reader.GetInt32(0) & “,” & reader.GetInt32 (1))
End While

Finally
reader.Close() ‘ पढ़ना समाप्त होने के बाद इसे (Close को) कॉल करना आवश्यक होता है।
End Try
End Using
End Sub

DbCommand क्लास – यह क्लास डॉट नेट फ्रेमवर्क संस्करण 2.0 में नया है। यह डाटा सोर्स के बदले एक्जिक्यूट होने वाले एस.क्यू.एल. स्टेटमेण्ट अथवा संगृहीत प्रोसीजर को व्यक्त करता है। यह विशिष्ट क्लासों के लिए एक आधार क्लास उपलब्ध कराता है जो कमाण्ड को व्यक्त करता है। इसका प्रारूप यह है- Dim instance As DbCommand

डाटाबेस प्रोग्रामिंग विद एडू. नेट पार्ट-2 | Database Programming With ADO.NET – Best Info

0
डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-2 | डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NET का परिचय | Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-2 | डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NET का परिचय | Database Programming With ADO.NET In Hindi

Table of Contents

डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-2 | डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NET का परिचय | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू. नेट परिचय (Introduction)ए.डी.यू. या एडू डॉट नेट लायब्रेरी का वह संकलन है जो आपको कई डाटाबेस प्रणालियों का इकट्ठा एक्सेस विजुअल स्टूडिया डॉट नेट में उपलब्ध कराता है। डाटाबेस प्रणालियों में आप किसी भी डाटाबेस प्रणाली यथा एस. क्यू.एल., अरिकल का उपयोग कर अपने एप्लिकेशन में डाटाबेस को जोड़ सकते हैं। इस अध्याय में हम आपके साथ एडू डॉट नेट की चर्चा करेंगे। एडू डॉट नेट असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) पर आधारित है। संयोजित डाटा आर्किटेक्चर के बारे में भी इस अध्याय में आपको बताया गया है।

इस पार्ट-2 में हम जानेगे :- एस. क्यू. एल. सर्वर (SQL Server), सर्वर एक्स्प्लोरर से डाटा को एक्सेस करना (Accessing Data Using Server Explorer), डाटा टेबल से डाटाबेस को एक्सेस करना (Accessing a Database with a DataTable), डायग्रिडव्यू कण्ट्रोल (DataGridView Control), डायग्रीडव्यू को स्टाइल देना (Styling a Datagrid), बड़े डाटाबेस के साथ कार्य करना (Dealing With Large Databases)

एस. क्यू. एल. सर्वर (SQL Server)

एस. क्यू. एल. सर्वर अथवा माइक्रोसॉफ्ट एस. क्यू. एल. सर्वर का उपयोग मुख्य रूप से कम्प्यूटर डाटाबेस को बनाने तथा उन्हें मेनटेन करने में होता है। इसकी सहायता से आप यूजर ग्राफिकल यूजर इंटरफेस का निर्माण कर सकते हैं। इसीलिए इसे बैक-एण्ड सॉफ्टवेयर कहा जाता है तथा कोई भी एप्लिकेशन बैक-एण्ड और फ्रण्ट एण्ड का सम्मिश्रण होता है। इसी उद्देश्य के लिए माइक्रोसॉफ्ट वी.बी. डॉट नेट ऐसी सुविधा उपलब्ध कराता है जिससे आप विजुअल बेसिक डॉट नेट क्षमताओं तथा एस. क्यू. एल. सर्वर की क्षमताओं को मिलाकर एप्लिकेशन बना सकें।

जब आप विजुअल स्टूडियो डॉट नेट के साथ एस.क्यू.एल. सर्वर का उपयोग करते हैं तो आप इसे बगैर खोले ही इसका उपयोग अपने एप्लीकेशन में कर सकते हैं। इसके लिए यह आवश्यक नहीं कि एस.क्यू.एल. सर्वर को खोलकर इसकी क्षमताओं का उपयोग करें।

सर्वर एक्स्प्लोरर से डाटा को एक्सेस करना (Accessing Data Using Server Explorer)

सर्वर एक्स्प्लोरर विजुअल स्टूडियो डॉट नेट का ऐसा टूल जिसकी सहायता से आप अपने एप्लिकेशन को विभिन्न प्रकार के डाटा स्रोतों के साथ जोड़ सकते हैं। सर्वर एक्स्प्लोरर को स्क्रीन पर प्रकट करने के लिए यह करें-

  1. View मेन्यू को क्लिक करें तथा Server Explorer का चयन करे। या फिर CTRL+ALT+S को की-बोर्ड से
    दबाएँ। तत्पश्चात् आपको सर्वर एक्स्प्लोरर दिखाई देगा।
  2. अब किसी एप्लिकेशन के साथ डाटा स्रोत को जोड़ने के लिए आवश्यक है कि डाटा कनेक्शन बनाने के लिए सर्वर एक्स्प्लोरर में Data Connections को दायाँ क्लिक करें तथा Add Connection… का चयन करें। इसके बाद डायलॉग बॉक्स प्रकट होगा।
  3. Add Connection डायलॉग बॉक्स को आप Tools Connect to Database… का चयन करके भी प्रकट कर सकते हैं।
  4. Data Connection डायलॉग बॉक्स में Data Source: के Change… बटन को क्लिक करें। तत्पश्चात् आपको Change Data Source डायलॉग बॉक्स दिखेगा।
  5. Change Data Source डायलॉग बॉक्स में आप कई प्रकार के डाटा स्रोत का चयन कर सकते हैं। Choose Data Source डायलॉग बॉक्स तब प्रकट होता है जब आप पहली बार कनेक्शन या डाटाबेस रेफ्रेन्स (database reference) जोड़ते हैं। आमतौर पर Change Data Source डायलॉग बॉक्स ही प्रकट होते हैं। दोनो ही डायलॉग बॉक्स का उद्देश्य एक ही है। आपको डाटा स्रोत तथा प्रोवाइडर के चयन का विकल्प उपलब्ध करवाना। यदि आप डाटाबेस के रूप में माइक्रोसॉफ्ट एक्सेस का उपयोग करना चाहते हैं तो Microsoft Access Database File का चयन करें। यदि डाटा प्रोवाइडर के रूप में माइक्रोसॉफ्ट एस. क्यू.एल. सर्वर का उपयोग करना चाहते हैं तो Microsoft SQL Server का चयन करें। यदि आप ऑरेकल डाटा प्रोवाइडर चाहते हैं तो Oracle Database का चयन करें।
  6. यदि आपने Data Source टेक्स्टबॉक्स में Microsoft Access Database File (OLE DB) का चयन किया है तो Add Connection डायलॉग बॉक्स में Data Source: टेक्स्टबॉक्स में वह चयनित मिलेगा।
  7. अब Database file name: टेक्स्टबॉक्स में डाटाबेस फाइल का चयन करने के लिए Browse… को क्लिक करें। तत्पश्चात् Select Microsoft Access Database File डायलॉग बॉक्स प्रकट होगा। डाटाबेस फाइल को लोकेट करें तथा इसे एप्लिकेशन के साथ जोड़ने के लिए तथा Open को क्लिक करें। 
  8. आप देखेंगे कि Database file name: टेक्स्टबॉक्स में चयनित फाइल का नाम इसके पूर्ण पाथ के साथ प्रकट हो गया है।
  9. जिस डाटाबेस के साथ आप कार्य करना चाहते हैं उस डाटाबेस को स्पष्ट करने के बाद कनेक्शन बना अथवा नहीं आप इसे सुनिश्चित करने के लिए Test Connection को क्लिक करें। ऐसा करने पर यदि कनेक्शन सफल होता है तो Test Connection Succeeded संदेश आएगा।
  10. OK क्लिक कर संदेश बॉक्स बंद कर दें। अब आपका डाटा प्रोवाइडर से कनेक्शन सफल हुआ।
  11. फिर OK को क्लिक कर Add Connection डायलॉग बॉक्स को बंद करें।
  12. इसके पश्चात् सर्वर एक्स्प्लोरर में वह डाटाबेस तथा उसके टेबल दिखेंगे।
  13. इसके बाद आप इस कनेक्शन का उपयोग किसी भी एप्लिकेशन के साथ कर सकते हैं। टेबल के डाटा को देखने के लिए आप उस टेबल को दायाँ क्लिक करे तथा Show Data Table का चयन करें।
  14. तत्पश्चात् फॉर्म डिजायनर के स्थान पर उस टेबल का डाटा दिखाई देगा।

डाटाबेस प्रोग्रामिंग विद एडू. नेट | डाटा बेस प्रोग्रामिंग क्या है? | Data Base से Connection Stable करने के लिये Steps | Connection Class In ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-2 | डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NET का परिचय | Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-2 | डाटा बेस प्रोग्रामिंग क्या है? | एडीओ ADO.NET का परिचय | Database Programming With ADO.NET In Hindi

डाटा टेबल से डाटाबेस को एक्सेस करना (Accessing a Database with a DataTable)

DataTable ऑब्जेक्ट किसी सारणी के विषय-वस्तु को आयताकार ऐरे में रखता है। डाटा टेबल द्वि-विमीय ऐरे की तरह होता है जिसमें पंक्तियाँ तथा कॉलम होते हैं। निम्नलिखित छः लाइन को कोडिंग dt नामक एक DataTable वेरियेबल बनाते हैं तथा CUSTOMERS.MDB (एक्सेस डाटाबेस) के CUSTOMDETAILS सारणी के विषय वस्तु के साथ इसे भरते हैं –

Dim As New Data Table()
Dim ConnStr As String = “Provider = Microsoft.Jet. OLEDB, 4.0;” & “Data Source = CUSTOMERS.MDB”
Dim SqlStr As String = “SELECT * from Custom Details”
Dim dataAdapter As New OleDB.OleDbDataAdapter (SqlStr, connStr)
DataAdapter. Fill()
DataAdapter.Dispose()

उपरोक्त कोड में सबसे पहला स्टेटमेण्ट dt नाम का DataTable का एक वेरियेबल बनाता है। उपरोक्त छ: लाइन एक्सेस डाटाबेस को किसी एप्लीकेशन से जोड़ने का मूलमंत्र है।

Rows.Count – तालिका में रिकार्ड के कुल संख्या को बताता है। तथा

dt.Columns.Count – तालिका में कॉलमों की संख्या को बताता है। रिकॉर्ड की संख्या 0 से शुरू होकर dt.Rows.Count-1 तक चलता है। तथा फील्ड की संख्या 0 से शुरू होकर dt.Columns.Count-1 तक चलता है।

dt.Columns(j) – Jवाँ फील्ड का नाम होता है। तथा
dt.Rows(i) (j) – iवाँ रिकॉर्ड का Jवाँ फील्ड का मान है। इसी प्रकार,dt.Rows(i) (fieldname) का मान वह स्ट्रिंग है को वाँ रिकॉर्ड के निर्धारित फील्ड की एण्ट्री (entry) में होता है।


आओ सीखें  – एक विण्डोज एप्लिकेशन बनायें। इसमें एक लिस्टबॉक्स को जोड़ें जो CUSTOMERS.MDB के CUSTOMDETAILS तालिका के Name के डाटा को डिस्प्ले करता है। तथा जेसे जैसे किसी विशेष नाम का चयन किया जाय वैसे वैसे इवेण्ट प्रॉसीजर उस रिकॉर्ड से उस नाम का मोबाइल टेक्स्टबॉक्स में प्रकट करे। इसका तथा इसके ऑब्जेक्ट, प्रॉपर्टी तथा मान इस प्रकार होंगे –

ऑब्जेक्टप्रॉपर्टीमान
फॉर्मNameForm1
 TextMy Project
लिस्टबॉक्सNameIstNames
लेबलNameLabell
 TextMobile
टेक्स्टबॉक्सNametxtMobile
 ReadOnlyTrue
 Textरिक्त


समाधान :

  1. File मेन्यू को क्लिक करें तथा New Project का चयन करें।
  2. New Project डायलॉग बॉक्स खुलने के पश्चात् Templates पेन में Windows Application को क्लिक करें।
  3. Name टेक्स्टबॉक्स में My Project टाइप करें तथा OK को क्लिक करें। इसके बाद एक नया विण्डोज फॉर्ड्स प्रोजेक्ट खुलेगा।
  4. फॉर्म पर प्रश्न में दिये गये अनुसार टूलबॉक्स में कंट्रोल को जोड़ें तथा उन्हें सजायें।
  5. फॉर्म को दो बार क्लिक करें और Public Class Form1 तथा End Class के बीच इस कोड को टाइप करें-

Dim dt As New DataTable

Private Sub Form1_Load(ByVal sender As System. Object, ByVal e As System.EventArgs) Handles
MyBase.Load

Dim connStr As String = “Provider = Microsoft.Jet.OLEDB.4.0;” & “Data Source =
Customers. MDB”
Dim SqlStr As String = “SELECT * FROM CUSTOMDETAILS”
Dim dataAdapter As New OleDb. OleDbDataAdapter(SqlStr, connStr)
dataAdapter.Fill(dt)
dataAdapter.Dispose()
IstNames.DataSource = dt
IstNames.DisplayMember = “Name”
End Sub

Private Sub IstNames_SelectedIndex Changed (ByVal sender As System. Object, ByVale As System.EventArgs) Handles 1stNames.SelectedIndex Changed
txtMobile.Text = CStr(dt.Rows (IstNames.SelectedIndex)(“Mobile”))

End Sub

  • F5 दबाकर रन करायें। इसका परिणाम होना चाहिए। 

डाटाग्रिडव्यू कण्ट्रोल (DataGridView Control)

आपने अब तक जाना कि डाटाबेस से सूचना लेकर हम उन्हें टेक्स्ट बॉक्स तथा लिस्ट बॉक्स में डिस्पले कैसे करते हैं। वी. बी. डॉट नेट में इस कार्य के लिए एक विशेष कण्ट्रोल है जिसे हम डाटाग्रिडव्यू (DataGridView) कन्ट्रोल के नाम से जानते हैं। डाटाग्रिडव्यू कन्ट्रोल टेबल फॉरमेट में डाटा को डिस्प्ले करने के लिए उपयोग में लाया जाता है। डायग्रिडव्यू कन्ट्रोल का नाम देने के लिए dg उपसर्ग का उपयोग करते हैं।

1- ग्रिड में डाटा को डिस्प्ले करना (Displaying Data in Grid) – ग्रिड में डाटा को डिस्प्ले करने के लिए सबसे पहले हम एक फॉर्म खोलते हैं। तथा टूलबॉक्स के Data टैब में से DataGridView कन्ट्रोल को दो बार क्लिक कर इसे फॉर्म पर जोड़ते हैं। (देखें चित्र 10.11) इसके बाद प्रॉपर्टीज विण्डो से इसके Anchor प्रॉपर्टी को Left, Top, Right या Left, Right, Bottom सेट करके उसे फॉर्म पर इस तरह व्यवस्थित करते हैं ताकि फॉर्म पर ऊपर या नीचे बटन जोड़ने के लिए जगह मिल जाय। (देखें चित्र 10.12) इसके पश्चात् ग्रिड में डाटाबेस के डाटा को डिस्प्ले करने के लिए यह करें-

  • DataGrid View Tasks बटन को ग्रिड से क्लिक करें।
  • उसके पश्चात् DataGrid View Tasks विण्डो दिखेगा।
  • Choose Data Source पुल डाउन मेन्यू को क्लिक करें तथा Add Project Data Source को क्लिक करें।
  • उसके पश्चात् Data Source Configuration Wizard खुलेगा। यहाँ बाई डिफॉल्ट Database चयन है। देख लीजिए यदि चयनित है तो Next क्लिक करें अन्यथा Database का चयन करें और Next क्लिक करें।
  • उसके पश्चात् Choose Your Data Connection अगला स्टेप आएगा। New Connection… बटन को क्लिक करें।
  • इसके पश्चात् Add Connection डायलॉग बॉक्स चित्र 10.17 की भाँति प्रकट होगा। यहाँ Data Source में Change Data Source डायलॉग बॉक्स में Data Source लिस्ट से Microsoft Access Database File का चयन कर Microsoft Access Database File (OLE DB) चयनित है तो ठीक है अन्यथा Change बटन को क्लिक करके OK क्लिक करें।
  • फिर, Database file name : के Browse बटन को क्लिक करें। क्लिक कररने पर Select Microsoft Access Database File विंडो आएगा। यहाँ अपने एक्सेस डाटाबेस फाइल को लोकेट करें तथा उपयुक्त डाटाबेस फाइल का चयन करके Open को क्लिक करें। (हमने यहाँ Personal Manager को क्लिक किया है।) आप चाहें तो यह पता कर सकते हैं कि डाटाबेस कनेक्शन सफल हुआ अथवा नहीं। इसके लिए Test Connection को क्लिक करें जिसके फलस्वरूप डायलॉग बॉक्स में Test Connection Succeeded प्रकट होगा जो यह सुनिश्चित करता है कि सब कुछ अब तक ठीक है।
  • OK क्लिक करें। उसके बाद Choose Your Data Connection डायलॉग बॉक्स में आ जायेंगे। यहाँ आप Connection String के (+) चिन्ह को क्लिक कर कनेक्शन स्ट्रिंग को कॉपी कर सकते हैं जो कोडिंग में काम आयेगा।
  • इसके बाद एक संदेश डायलॉग बॉक्स आयेगा जो आपको यह सूचित करता है कि यह डाटाबेस प्रोजेक्ट फोल्डर में नह है जो डिप्लॉयमेण्ट के लिए आवश्यक है। आप इसे अपने प्रोजेक्ट फोल्डर में कॉपी करने के लिए Yes क्लिक करें
  • इसके बाद Save the Connection String to the Application Configuration File स्टेप आयेगा। यहाँ आप कनेक्शन को डिफॉल्ट नाम से सुरक्षित कर सकते हैं या फिर अपना कोई नाम दे सकते हैं। अपना नाम देने के लिए डिफॉल्ट नाम हटाकर अपना नाम दे दें। डिफॉल्ट नाम को संशोधित करने के लिए Yes, Save the connection as : चेक बॉक्स चेक्ड होना चाहिए। इसके बाद Next को क्लिक करें।
  • उसके बाद Choose Your Database Objects स्टेप आयेगा। यहाँ नीचे Dataset name: टेक्स्ट बॉक्स में डाटा सेट का नाम है जो आपके कोडिंग में महत्वपूर्ण भूमिका निभाता है। परन्तु उस एप्लीकेशन में इन सब को याद करने की आवश्यकता नहीं है। यहाँ Tables चेक बॉक्स को चेक करें और Finish को क्लिक करें।
  • यदि आपके डाटाबेस फाइल में एक से अधिक टेबल है तो उसका चयन करने के लिए DataView Tasks बटन को डाटाग्रिडव्यू से
    क्लिक करें तथा DataView Tasks में Choose Data Source पुल डाउन को क्लिक करें और Other Data Sources से उस टेबल का चयन करें जिससे डाटा को आप ग्रिड में डिस्प्ले करना चाहते हैं।
  • F5 दबाकर परिणाम देखें।

2- ग्रीड में डाटा को कोड के माध्यम से दिखाना (Displaying Data in Grid Through Code) – पिछले खण्ड में आपने देखा कि डिजायन समय में डाटाग्रीड में कैसे डाटा को प्रकट करें। आइए, इस खण्ड में हम कोड की सहायता से डाटा को दिखाते हैं। डाटयग्रीड कन्ट्रोल सर्वर इक्स्प्लोरर के द्वारा प्रदर्शित तालिका के समान ही तालिका कॉरमेट में पूरे व्यू के लिए मानों को डिस्प्ले करता है। डाटाग्रीड कन्ट्रोल के नाम के लिए सामान्य उपसर्ग (prefix) dg होता है। डाटा टेबल के भरने के बाद यह स्टेटमेण्ट dg Data.DataSource= dt
dt डाटा तालिका (data table) के सामग्री को डाटा ग्रीड में डिस्प्ले करता है। कोड के माध्यम से ग्रीड में डाटा को कैसे प्रकट किया जाता है को समझे –

आओ सीखें – एक विण्डोज एप्लिकेशन बनायें। जो CUSTOMERS.MDB के दोनों तालिकाओं से डाटा को ग्रीड में डिस्प्ले करे। इसमें दो बटन Show By Cities तथा Show By Dues होंगे। Show By Cities CUSTOMDETAILS के सभी फील्ड से डाटा को प्रकट करेगा जबकि Show By Dues CUSTOMDETAILS के सभी डाटा के साथ ही OUTSTANDINGS तालिका के Dus फील्ड डाटा को भी प्रकट करेगा। इसका इंटरफेस तथा ऑब्जेक्ट प्रॉपर्टीज और मान इस प्रकार होंगे-

ऑब्जेक्टप्रॉपर्टीमान
फॉर्मNameForm1
 TextLab Exercise 10.3
बटनNamebtnCities
 TextShow By Cities
बटनNamebtnDues
 TextShow By Dues
डाटाग्रीडNamedgData
 AnchorTop, Left, Right

समाधान :

  1. File मेन्यू को क्लिक करें तथा New Project का चयन करें।
  2. New Project डायलॉग बॉक्स खुलने के पश्चात् Templates पेन में Windows Application को क्लिक करें।
  3. Name टेक्स्टबॉक्स में My Project टाइप करें तथा OK को क्लिक करें। इसके बाद एक नया विण्डोज फॉर्मूस प्रोजेक्ट खुलेगा।
  4. फॉर्म पर प्रश्न में दिये गये अनुसार टूलबॉक्स में कंट्रोल को जोड़ें तथा उन्हें सजायें। 
  5. फॉर्म को दो बार क्लिक करें और Public Class Form1 तथा End Class के बीच इस कोड को टाइप करें-

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
UpdateDataGrid(“Select From CustomDetails”)
End Sub

Private Sub btnCities_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
btnCities.Click
UpdateDataGrid(“Select * FROM CUSTOMDETAILS ORDER BY CITY ASC”)

Private Sub btnDues_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
btnDues.Click

UpdateDataGrid(“Select Name, Customdetails.Name, customdetails.state, dues from customdetails inner join outstandings on customdetails.custid = outstandings custid order by outstandings.dues asc “)  

UpdateDataGrid(“Select Name, State, Dues from customdetails inner join outstandings
customdetails.custid = outstandings.custid order by outstandings.dues asc “)

End Sub

Sub UpdateDataGrid(ByVal SqlStr As String)
Dim dt As New DataTable()

CUSTOMERS.MDB”

Dim dataAdapter As New OleDb.OleDbDataAdapter(SqlStr, ConnStr)
dataAdapter.Fill(dt)
dataAdapter.Dispose()
dgData.DataSource = dt
End Sub

F5 दबाकर एप्लिकेशन को रन करें। इसका परिणाम दिखन चाहिए।

डाटाग्रीडव्यू को स्टाइल देना (Styling a Datagrid)

डाटाग्रीडव्यू का डिफॉल्ट अपिअरेन्स सामान्य (plain) होता है। आप इसे अपने अनुसार एक विशेष स्टाइल दे सकते हैं। इसके लिए कई प्रॉपर्टी होते हैं जिन्हें आपको सेट करना होता है। सारणी में डाटाग्रीडव्यू के विभिन्न अवयव को फॉरमेट करने हेतु प्रॉपर्टी तथा उनके विवरण दिये गये हैं।

BorderStyle – डाटाग्रीडव्यू का बॉर्डर स्टाइल सेट करता है।
CellBorderStyle – डाटाग्रीडव्यू के सेल बॉर्डर स्टाइल को सेट करता है। इसमें आप Custom को छोड़कर कोई भी स्टाइल चुन सकते हैं।
Clipboard Copy Mode – इसके माध्यम से आप यह सेट कर सकते हैं कि यूजर सेल के टेक्स्ट को यदि कॉपी करें तो इसके साथ रो हेडर तथा कॉलम हेडर कॉपी होगा अथवा नहीं। अगर आप यूजर को कॉपी सुविधा नहीं देना चाहते हैं तो इसे Disable सेट करें। यदि आप यूजर को सेल टेक्स्ट के साथ उसके हेडर टेक्स्ट के कॉपी की भी सुविधा देना चाहते हैं तो Enable AlwaysInclude Header Text सेट करें अन्यथा Enable WithoutHeaderText सेट करें।
ColumnHeader BorderStyle – कॉलम हेडर के बॉर्डर स्टाइल को सेट करता है। इसमें Custom को छोड़कर कोई भी मान का चयन कर सकते हैं।
Column HeadersDefaultCellStyle – कॉलम का डिफॉल्ट हेडर स्टाइल सेट करता है। हेडर के लिए आप यदि सभी कॉलम का हेडर टेक्स्ट Verdana तथा Bold चाहते हैं तो इसके इलिपसिस बटन (…) को क्लिक कर CellStyle Builder डायलॉग बॉक्स को चित्र 10.27 की भाँति प्रकट करें तथा Appearance खण्ड के Font इलिपसिस बटन को क्लिक करें। तदुपरांत Font डायलॉग बॉक्स से Verdana तथा Bold का चयन करें। इसी प्रकार आप ForeColor, Selection BackColor तथा SelectionForeColor से आप कॉलम हेडर को रंग दे सकते हैं, चयनित पृष्ठ को रंग दे सकते हैं तथा चयन को रंग दे सकते हैं। इसी प्रकार CellStyle Builder डायलॉग
बॉक्स से Behavior खण्ड में Format इलिपसिस बटन (…) को क्लिक कर चित्र की भाँति Format String Dialog डायलॉग बॉक्स को खोल कर विभिन्न डाटा मान की फॉरमेटिंग कर सकते हैं।
ColumnHeadersHeight – कॉलम के हेडर रो के ऊँचाई को पिक्सेल में सेट करता है। परन्तु इसके लिए ColumnHeadersHeightSizeMode से EnableResizing सेट होना चाहिए।
ColumnHeadersHeightSizeMode – इसके माध्यम से आप कॉलम हेडर की ऊँचाई को सेट कर सकते हैं। इसके माध्यम से आप कॉलम हेडर के आकार को बदलने, न बदलने तथा इसके टेक्स्ट के अनुसार इसके आकार को निर्धारित करने की सुविधा दे सकते हैं। इसके लिए Enable Resizing, Disable Resizing तथा AutoSize का क्रमशः चयन करें।

बड़े डाटाबेस के साथ कार्य करना (Dealing With Large Databases)

डाटाग्रीड में डाटा को डिस्प्ले करके आपने देखा। पिछले डाटाग्रीड में हमने एक छोटा डाटाबेस का उपयोग किया था। इसमें फील्ड या कॉलम तथा रो या पंक्ति दोनों ही कम थे। परन्तु हर बार हमें डाटाबेस के रूप में आवश्यक नहीं कि इतने ही छोटे डाटाबेस के साथ कार्य करना होगा। हमें बड़े डाटाबेस के साथ भी कार्य करना होगा। बड़े डाटाबेस के साथ कार्य करने के लिए हम चार एस. क्यू. एल. स्टेटमेण्ट के साथ कार्य करते हैं।

एस. क्यू. एल. स्टेटमेण्ट-1 (SQL Statement 1) – SELECT * FROM Table1 ORDER BY Field1 ASC/DESC

इस स्टेटमेण्ट के साथ हम निम्नलिखित तरह से अपने डाटा को प्रदर्शित कर सकते हैं-
1. किसी विशेष फील्ड यथा Name, City, State इत्यादि के आधार पर रिकॉर्ड को वर्णमाला क्रम में प्रदर्शित कर
सकते हैं। 

2. Name तथा City के आधार पर रिकॉर्ड को वर्णमाला क्रम में प्रदर्शित कर सकते हैं।
3. Outstanding के आधार पर रिकॉर्ड को उल्टे क्रम में प्रदर्शित कर सकते हैं।

एस. क्यू. एल. स्टेटमेण्ट-2 (SQL Statement 2)– SELECT * FROM Table Where Criteria
इस स्टेटमेण्ट की सहायता से हम निम्नलिखित तरह से डाटा को प्रदर्शित करवा सकते हैं।
1. वैसे ग्राहको के नाम जिनके राज्य Madhya Pradesh है।
2. वैसे ग्राहकों के नाम जिनके बकाया राशि 1,00,000 से अधिक है।
3. वैसे रिकॉर्ड जिसके City फील्ड के नाम की शुरुआत P से होती है।

एस. क्यू. एल. स्टेटमेण्ट-3 (SQL Statement 3) – SELECT * FROM Table1 INNER JOIN Table2 ON foreign field = primary field WHERE criteria
यह स्टेटमेण्ट फॉरेन की के आधार पर किसी डाटाबेस के तालिकाओं को जोड़कर कई प्रकार से रिकॉर्ड को प्रदर्शित करता है। उदाहरण के लिए-
1. वैसे रिकॉर्ड को प्रदर्शित करना जिसके City फील्ड के डाटा का दूसरा अक्षर a हो।
2. नामों को उल्टे वर्णमाला क्रम में उनके बकाया राशि के साथ डिस्प्ले करना।

एस. क्यू. एल. स्टेटमेण्ट-4 (SQL Statement 4) – SELECT field1, field2, fieldN FROM Table1 WHERE criteria
….
उपरोक्त स्टेटमेण्ट विशेष मापदण्ड को पूरा करने वाले कुछ चुनिंदा फील्ड के डाटा को प्रदर्शित करता है। उदाहरणस्वरूप,
1. CUSTOMDETAILS के Name तथा Mobile फील्ड के सभी डाटा को प्रदर्शित करता है।
2. CUSTOMDETAILS तथा OUTSTANDINGS को मिलाकर CUSTOMDETAILS के Name फील्ड तथा OUTSTANDINGS तालिका के Dues फील्ड के सभी डाटा को प्रदर्शित कर सकता है।

उपरोक्त स्टेण्मेण्ट के प्रारूप में ASC तथा DESC क्रमश: बढ़ते (ascending) या घटते (descending) क्रम को दर्शाता है। Criteria क्लाउज स्ट्रिंग है जिसमें If ब्लॉक के साथ उपयोग किये जाने वाले कंडिशन होते हैं। स्टैण्डर्ड ऑपरेटर <,> तथा = के अतिरिक्त criteria स्ट्रिंग में Like ऑपरेटर का भी उपयोग होता है। Like वाइल्डकार्ड कैरेक्टर जैसे- (अण्डरस्कोर) तथा % (प्रतिशत) चिन्ह का प्रयोग स्ट्रिंग की तुलना पैटर्न (pattern) से करने में करता है। अण्डरस्कोर कैरेक्टर का मतलब एक कैरेक्टर से होता है तथा उस पोजीशन से होती है जहाँ स्ट्रिंग में उसका स्थान है।

उदाहरण के लिए b_n का अर्थ ban, ben, bun हो सकता है। प्रतिशत चिन्ह एक से अधिक कैरेक्टर को इंगित करता है अपितु उसकी पोजीशन वहाँ होती है जो स्ट्रिंग में है। उदाहरण के लिए C% का तात्पर्य c के बाद वाले किसी भी शब्द यथा computer, company, command इत्यादि से हो सकता है। इसी प्रकार %r का तात्पर्य computer, doctor, engineer, philosopher कुछ भी हो सकता है।

SELECT field FROM clause
वाक्य में fields सभी फील्डों को या उपलब्ध फील्ड के क्रम को इंगित करता है तथा clause कोई एक तालिका या दो तालिकाओं का समायोजन हो सकता है। दो तालिकाओं का समायोजन (join) फॉर्म के इस क्लाउज के द्वारा इंगित होता-
table1 INNER JOIN table2 ON foreign key of table1 = primary key of table2 जिसमे WHERE criteria जोड़ने पर criteria के अनुसार ही रिकॉर्ड के दर्शाने को सीमित कर सकता है। तथा इस ORDER BY field(s) ASC/DESC जोड़ने पर स्पष्ट फील्ड के अनुसार रिकॉर्ड बढ़ते या घटते क्रम में प्रस्तुत होंगे।

SELECT * FROM CUSTOMDETAILS ORDER BY Name ASC
बढ़ते हुए क्रम में Name फील्ड के आधार पर CUSTOMDETAILS के सभी रिकॉर्ड को दिखाएगा। इसी प्रकार,
SELECT * FROM CUSTOMDETAILS ORDER BY Name, City ASC
CUSTOMDETAILS तालिका से बढ़ते हुए क्रम (वर्णमाला क्रम) में पहले Name तथा फिर City फील्ड के आधार पर रिकॉर्ड को दिखाएगा।

अब इस स्टेटमेण्ट को देखें-
SELECT * FROM CUSTOMDETAILS ORDER BY STATE DESC
STATE फील्ड के आधार पर उल्टे वर्णमाला क्रम में CUSTOMDETAILS तालिका के सभी रिकॉर्ड को दिखाएगा। इसी प्रकार,
SELECT * FROM CUSTOMDETAILS WHERE State= Madhya Pradesh
CUSTOMDETAILS तालिका से केवल उन्हीं रिकॉर्ड को दिखाएगा जिसके State फील्ड में Madhya Pradesh है। इसी प्रकार,
SELECT * FROM CUSTOMDETAILS WHERE MOBILE Like 92%
CUSTOMDETAILS के केवल उन्हीं रिकॉर्ड को दिखायेगा जिनके मोबाइल संख्या की शुरुआत 92 से है।

ऊपर आपने उदाहरण से कैसे किसी एक तालिका में विभिन्न प्रकार से रिकॉर्ड को दिखाते हैं देख लिया होगा। आइए अब हम यह जानते हैं कि किस प्रकार दो तालिकाओं को मिलाकर हम डाटा को प्रदर्शित करते हैं। हम यहाँ जो उदाहरण प्रस्तुत कर रहे हैं वे CUSTOMERS.MDB के दोनों तालिकाओं CUSTOMDETAILS तथा OUTSTANDINGS के संदर्भ में हैं। इससे यह स्टेटमेण्ट

SELECT * FROM CUSTOMDETAILS INNER JOIN OUTSTANDINGS ON CUSTOMDETAILS.NAME=
OUTSTANDINGS.NAME ORDER BY OUTSTANDINGS.DUES DESC
दोनो तालिकाओं को मिलाकार ग्राहकों के बकाया राशि के अनुसार घटते क्रम में रिकॉर्ड को दर्शायगा। अर्थात् जिसका बकाया राशि सबसे अधिक होगा उसको सबसे पहले दिखायेगा।

इसी प्रकार यह स्टेटमेण्ट उन रिकॉर्ड को दिखायेगा जिनकी बकाया राशि 1,00,000 या उससे ऊपर होगी-
SELECT * FROM CUSTOMDETAILS INNER JOIN OUTSTANDINGS ON
CUSTOMDETAILS.NAME=OUTSTANDINGS.NAME WHERE DUES >= 100000

इसी प्रकार यह स्टेटमेण्ट –
SELECT FROM CUSTOMDETAILS INNER JOIN OUTSTANDINGS ON CUSTOMDETAILS.NAME=
OUTSTANDINGNAME WHERE CITY Like ‘P%’
दोनों तालिकाओं के केवल उन डाटा को दिखायेगा जिनके City फील्ड की शुरुआत P से होती है।
अब आप चाहे तो ऐसा भी कर सकते हैं कि रिकॉर्ड केवल कुछ विशेष फील्ड के आधार पर ही प्रकट हो। उदाहरण के लिए CUSTOMDETAILS से केवल Name तथा Mobile फील्ड के ही रिकॉर्ड प्रकट हों।

ऐसा इस स्टेटमेण्ट से हो सकता है- SELECT Name, Mobile FROM CUSTOMDETAILS
अब आप चाहते हैं कि CUSTOMDETAILS तालिका का Name, Mobile तथा OUTSTANDINGS तालिका का Dues फील्ड का डाटा प्रदर्शित हो तो इस स्टेटमेण्ट का प्रयोग करें-
SELECT Name, Mobile, Dues FROM CUSTOMDETAILS INNER JOIN OUTSTANDINGS ON CUSTOMDETAILS.Name: = OUTSTANDINGS.Name

डाटाबेस प्रोग्रामिंग विद एडू. नेट पार्ट-1 | Database Programming With ADO.NET – Best Info

0
डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-1 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-1 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-1 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू. नेट परिचय (Introduction) – ए.डी.यू. या एड् डॉट नेट लायब्रेरी का वह संकलन है जो आपको कई डाटाबेस प्रणालियों का इकट्ठा एक्सेस विजुअल स्टूडिया डॉट नेट में उपलब्ध कराता है। डाटाबेस प्रणालियों में आप किसी भी डाटाबेस प्रणाली यथा एस. क्यू.एल., अरिकल का उपयोग कर अपने एप्लिकेशन में डाटाबेस को जोड़ सकते हैं। इस अध्याय में हम आपके साथ एडू डॉट नेट की चर्चा करेंगे। एडू डॉट नेट असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) पर आधारित है। संयोजित डाटा आर्किटेक्चर के बारे में भी इस अध्याय में आपको बताया गया है।

इस पार्ट-1 में हम जानेगे :- डाटाबेस (Database), प्राइमरी तथा फॉरेन की (Primary and Foreign Keys), ए. डी. ओ. (ADO), एडू डॉट नेट (ADO.NET), एडू डॉट नेट के फीचर (Features of ADO.NET), एडू तथा एडू डॉट नेट (ADO and ADO.NET)

डाटाबेस (Database)

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

तालिका या टेबल डाटा का एक आयाताकार ऐरे (ectangular array) होता है। तालिका का प्रत्येक कॉलम फील्ड (field) कहा जाता है। एक फील्ड में एक ही प्रकार के डाटा होते हैं। तालिका का प्रत्येक पंक्ति एक रिकॉर्ड (record) होता है। एक रिकॉर्ड में दूसरे पंक्ति की तरह ही समान सूचना संगृहीत होते हैं।

डाटाबेस या रिलेशनल डाटाबेस एक या एक से अधिक तालिकाओं का संकलन होता है। डाटाबेस या रिलेशनल डाटाबेस जिस सॉफ्टवेयर के द्वारा बनाये जाते हैं, वह सॉफ्टवेयर डाटाबेस प्रबंधन सॉफ्टवेयर कहा जाता है। आज बाजार में कई डाटाबेस प्रबंधन सॉफ्टवेयर उपलब्ध हैं। उनमें एक्सेस, ओरेकल, एस. क्यू. एल. सर्वर कुछ प्रचलित नाम हैं। वी.बी. डॉट इन सॉफ्टवेयर में बनाये गये डाटाबेस का प्रबंधन तथा विश्लेषण करने के लिए फीचर उपलब्ध कराता है।

वी.बी. डॉट नेट में एक शक्तिशाली डाटा व्यूअर है, जिसका उपयोग डाटाबेस के सभी भागों को ब्राउज़ करने में किया जा सकता है। प्रोजेक्ट में उपयोग किया गया डाटाबेस प्रोजेक्ट के bin फोल्डर में उपलब्ध होता है।

डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-1 | ado क्या है? और ado net क्या है | ADO.NET | Database, Internet, and Systems Integration- ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-1 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू. नेटपार्ट-1 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

प्राइमरी तथा फॉरेन की (Primary and Foreign Keys)

एक अच्छे तालिका की खास बात यह होती है कि उसमें एक ऐसा फील्ड या फील्ड का एक ऐसा सेट होता है जो उस तालिका के प्रत्येक रिकॉर्ड को एक अनोखा पहचान उपलब्ध कराता है। इस फील्ड या फील्ड के सेट को प्राइमरी की कहा जाता है। उदाहरण के लिए CustomDetails तालिका में CUSTID फील्ड एक प्राइमरी की है। प्राइमरी की वैसे फील्ड को बनाया जाता है, जिसमें डुप्लीकेट डाटा होने की संभावना न हो। आमतौर पर रोल नं. या इसी प्रकार को संख्या प्राइमरी की बनाया जाता है।

जब डाटाबेस बनाया जाता है तब ही प्राइमरी की को स्पष्ट किया जाता है। यदि ऐसा नहीं होता है तो वी.बी. डॉट नेट इस बात पर बल देता है कि प्रत्येक रिकॉर्ड का प्राइमरी की फील्ड में एक एण्ट्री हो और यह कि एक ही एण्ट्री दो अलग-अलग रिकॉर्ड में प्रकट न हो। यदि उपयोगकर्त्ता बगैर प्राइमरी की के रिकॉर्ड प्रविष्ट करने का प्रयास करता है तो एक त्रुटि ‘Index or Primary Key can’t contain a null record” आयेगा।

यदि उपयोगकर्ता कोई रिकॉर्ड किसी अन्य रिकॉर्ड वाले प्राइमरी की के साथ प्रविष्ट करता है तो ‘The Changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or field that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.” त्रुटि संदेश आयेगा।

जब किसी डाटाबेस में दो या अधिक तालिकाएँ होती हैं तो ये तालिकाएँ आपस में सम्बन्ध रखती हैं। उदाहरण के लिए CUSTOMDETAILS तथा OUTSTANDINGS तालिका CUSTID फील्ड की सहायता से जुड़े हैं। अब हम दो फील्ड CUSTOMDETAILS.CUSTID तथा OUTSTANDINGS.CUSTID को रेफर करते हैं।

यह ध्यान दें कि CUSTOMDETAILS.CUSTID, OUTSTANDINGS.CUSTID में अनोखे ढंग से प्रकट होते हैं तथा OUTSTANDINGS.CUSTID प्राइमरी की है। हम यहाँ कह सकते हैं कि USTOMDETAILS.CUSTID,
OUTSTANDINGS.CUSTID का फॉरन की है। फॉरन की को तब स्पष्ट किया जाता है, जब तालिका को सबसे पहले अर्थात्, फॉरन की में प्रत्येक मान अन्य तालिका के प्राइमरी की में भी प्रकट होना चाहिए।

CUSTOMERS.MDB में CUSTOMDETAILS.CUSTID तथा OUTSTANDINGS.CUSTID उनके अपने संबंधित तालिकाओं में प्राइमरी की की तरह स्पष्ट है तथा CUSTOMDETAILS. CUSTID को OUTSTANDINGS.CUSTID के फॉरन की की तरह स्पष्ट किया गया है। यदि उपयोगकर्त्ता CUSTOMDETAILS तालिका में Name जोड़ना चाहते हैं, जिसका CUSTID OUTSTANDINGS तालिका record because a related record is required in table CUSTOMDETAILS” आयेगा।

यह संदेश तब भी आयेगा जब आप OUTSTANDINGS.CUSTID फील्ड से CUSTID मिटाना चाहते हैं, जो CUSTOMDETAILS.CUSTID फील्ड में प्रकट होता है। दो तालिकाओं के परस्पर निर्भर होने के कारण CUSTOMERS.MDB रिलेशनल डाटाबेस कहलाता है।

फॉरन की की सहायता से वी.बी. डॉट नेट एक अर्थपूर्ण ढंग से रिलेशनल डाटाबेस में दो तालिकाओं को लिंक करता है। उदाहरण के लिए, दो तालिकाएँ CUSTOMDETAILS तथा OUTSTANDINGS CUSTOMERS.MDB डाटाबेस से
CUSTOMDETAILS.CUST ID फॉरेन की के आधार पर लिंक करता है, इस लिंक्ड तालिका को हमें बनाने की आवश्यकता नहीं होती है। यह वी.बी. डॉट नेट एस. क्यू. एल. भाषा में स्वयं बनाता है।

ए. डी. ओ. (ADO)

एडू (ADO) एक माइक्रोसॉफ्ट प्रौद्योगिकी है जिसका पूर्ण रूप एक्टिवएक्स डाटा ऑब्जेक्ट्स (ActiveX Data objects) होता है। इसको माइक्रोसॉफ्ट ने अक्टूबर 1996 में परिचित किया था। यह कॉम्पोनेण्ट ऑब्जेक्ट मॉडल (Component Object Model) का एक सेट है जो किसी डाटाबेस से डाटा को एक्सेस करने हेतु प्रोग्रामिंग इंटरफेस उपलब्ध कराता है।

यह डाटाबेस तथा प्रोग्रामिंग भाषा के बीच एक माध्यम के रूप में कार्य करता है। एडू की सहायता से प्रोग्रामर ऐसे प्रोग्राम बना सकते हैं जो डाटाबेस से डाटा को एक्सेस किए बगैर यह जाने कि डाटाबेस कैसे लागू होगा। एडू को रिमोट डाटा ऑब्जेक्ट्स (Remote Data Objects) तथा डाटा एक्सेस ऑब्जेक्ट (Data Access Object) का उत्तरवर्ती (successor) समझा जाता है।

एडू चार संकलन (collections) तथा बारह ऑब्जेक्ट से मिलकर बना होता है। फील्ड, प्रॉपर्टी, पैरामीटर तथा एरर (errors) इसके चार संकलन हैं। कनेक्शन, कमाण्ड, रिकॉर्ड सेट, इमिडिएट, बैच, ट्रांजैक्शन, रिकॉर्ड, स्ट्रिम, पैरामीटर, फील्ड, प्रॉपर्टी तथा एरर इसके बारह ऑब्जेक्ट हैं, जिससे मिलकर यह बना है। एडू की सहायता से डाटा को एक्सेस करने तथा मनिप्यूलेट करने के लिए ये आवश्यक पद हैं-

  1. डाटाबेस से जुड़ने के लिए कनेक्शन ऑब्जेक्ट का निर्माण
  2. डाटा को एक्सेस करने के लिए रिकॉर्ड सेट (RecordSet) ऑब्जेक्ट का निर्माण
  3. कनेक्शन को खोलना
  4. रिकॉर्ड सेट को खोलकर इसे पॉप्यूलेट करना / भरना तथा खुले हुए फंक्शन को पैरामीटर के रूप में इच्छित टेबल का नाम या एस. क्यू. एल. स्टेटमेन्ट पास करना।
  5. लाये गये डाटा पर इच्छित सर्च करना या अन्य प्रोसेसिंग करना
  6. बदलाव को Update अथवा UpdateBatch की सहायता से सुरक्षित करना।
  7. रिकॉर्ड सेट को बंद करना।
  8. कनेक्शन को बंद करना

इस पूरे क्रम में डाटाबेस कनेक्शन खुला रहता है। इसलिए इसे संयोजित डाटा आर्किटेक्चर (connected data architecture) पर आधारित प्रोद्यौगिकी कहते हैं और यही कमी के कारण एडू डॉट नेट का जन्म हुआ। एडू को कई भाषाओं यथा ए. एस. पी., पावर बिल्डर तथा विजुअल बेसिक फॉर एप्लिकेशन्स (Visual Basic for Applications) का सपोर्ट प्राप्त है।

एडू डॉट नेट (ADO.NET)

एडू डॉट नेट लायब्रेरी का एक संकलन है जिसका उपयोग माइक्रोसॉफ्ट एस. क्यू. एल. सर्वर, माइक्रोसॉफ्ट सर्वर, ऑरकल, एस. क्यू. एल., माइक्रोसॉफ्ट एक्सेल इत्यादि जैसे विभिन्न संसाधनों का उपयोग करते हुए शक्तिशाली डाटाबेस के निर्माण में होता है। एडू डॉट नेट (ADO.NET) डॉट नेट फ्रेमवर्क के विभिन्न क्लास पर निर्भर करता है जो आग्रह (requests) को प्रोसेस कर डाटाबेस प्रणाली तथा उपयोगकर्ता के बीच ट्रांजीशन (transition) को सम्पन्न करता है। ये सारी क्रियाएँ सामान्यतः DataSet क्लास के माध्यम से नियंत्रित होता है।

DataSet क्लास डाटाबेस इंजिन तथा विण्डोज कन्ट्रोल (जो पूरे यूजर इंटरफेस का होता है) के बीच का एक माध्यम (agent) होता है। DataSet ऑब्जेक्ट किसी भी प्रकार की सूची को व्यवस्थित करने में सक्षम होता है चाहे वह डाटाबेस इन्वायरमेण्ट में बना हो अथवा न बना हो। एडू डॉट नेट एप्लिकेशन में डाटाबेस के फीचरों को उपयोग करने के अलावा आप एक्स.एम.एल. के लाभ भी पूरी तरह से प्राप्त कर सकते हैं क्योंकि एक्स.एम.एल. DataSet क्लास के द्वारा पूरी तरह से सपोर्ट किया जाता है।

एप्लीकेशन के एक्स. एम. एल. (XML) सपोर्ट देने के लिए डॉट नेट में System.Xml.dll लायब्रेरी उपलब्ध होता है। परन्तु जब आप एक्स. एम.एल. का उपयोग करते हैं तो आपको इस लायब्रेरी को आयात (import) नहीं करना होता है। इसका कारण यह है कि जब आप New Project डायलॉग बॉक्स में विण्डोज फॉर्मूस एप्लीकेशन का निर्माण करते हैं तो System.Xml.dll नेमस्पेस आपके एप्लीकेशन में स्वतः ही जुड़ जाता है। डॉट नेट फ्रेमवर्क में जो क्लास एक्स. एम. एल. को लागू करता है वह System. Xml नेमस्पेस से परिभाषित होता है।

एडू डॉट नेट के फीचर (Features of ADO.NET)

आपने इस पाठ के पिछले खण्ड में एडू डॉट नेट के बारे में जाना। आइए अब हम एडू डॉट नेट के कुछ महत्वपूर्ण फीचर के बारे में जानते हैं। एडू डॉट नेट के फीचर इस प्रकार हैं –

1- असंयोजित डाटा स्ट्रक्चर (Disconnected Data Architecture) – एडू डॉट नेट में असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) का प्रयोग होता है। जैसाकि मैंने बताया कि अगर आप एप्लीकेशन में किसी डाटाबेस का प्रयोग कर रहे हैं तो आपको उस डाटाबेस के उपयोग हेतु उस डाटाबेस सॉफ्टवेयर को खोलने की आवश्यकता नहीं होती है।

तथा एप्लीकेशन डाटा को एक्सेस करने एवं उसे अपडेट करते समय ही केवल डाटाबेस से जुड़ता है। डाटा एक बार प्राप्त होने के बाद डाटाबेस तथा यूजर इंटरफेस के बीच कोई कनेक्शन नहीं रहता। और फिर जब डाटाबेस को अपडेट करने की आवश्यकता होती है तब कनेक्शन पुनः स्थापित हो जाता है। इस प्रकार आर्किटेक्चर में डाटाबेस कई एप्लीकेशन की जरूरतों को साथ-साथ पूरा कर सकता है क्योंकि डाटाबेस तथा एप्लीकेशन के मध्य कनेक्शन कुछ ही समय के लिए होता है। 

2- डाटासेट (DataSet) – डाटासेट डाटा एक्सेस करने का सबसे सामान्य विधि है क्योंकि यह असंयोजित डाटा आर्किटेक्चर को लागू करता है। एड् डॉट नेट असंयोजित डाटा आर्किटेक्चर को लागू करता है। एडू डॉट नेट असंयोजित डाटा आर्किटेक्चर पर आधारित होता है। अतः एप्लीकेशन के लिए यह सम्भव नहीं होता है कि यह प्रत्येक रिकॉर्ड को प्रोसेस करने के लिए डाटाबेस के साथ संवाद बनाए। परिणामस्वरूप, डाटा डाटासेट से ही स्टोर रहता है तथा वहीं से प्राप्त होता है।

डाटासेट डाटाबेस रिकॉर्ड का एक कैश्ड (cached) सेट होता है। आप वास्तविक डाटा की तरह ही डाटासेट में संग्रहीत रिकॉर्ड के साथ कार्य कर सकते। हैं। अंतर केवल यह है कि डाटासेट डाटा सोर्स से मुक्त रहता है तथा आप डाटा सोर्स से जुड़े नहीं (disconnected) रहते हैं।

3- एक्स. एम. एल. फॉरमेट (XML Format) – एडू डॉट नेट में एक्स. एम. एल. डाटा स्थानांतरण का एक बुनियादी फॉरमेट है। डाटा डाटाबेस से डाटासेट में स्थानांतरित होता है तथा डाटासेट से एक्स. एम. एल. का प्रयोग कर अन्य कम्पोनेन्ट स्थानांतरित होता है। आप डाटा सोर्स के रूप में एक्स. एम. एल. का भी प्रयोग कर सकते हैं तथा यहाँ से डाटासेट से डाटा को संग्रहीत कर सकते हैं। एड् डॉट नेट के साथ कार्य करने के लिए एक्स. एम. एल. का ज्ञान होना आवश्यक नहीं क्योंकि एक्स. एम. एल. में तथा इससे किये जाने वाले डाटा परिवर्तन यूजर से छिपा होता है।

चूँकि डाटासेट एक्स.एम.एल. फॉरमेट में स्टोर होता है और विभिन्न प्रकार के एप्लीकेशनों में संचारित हो सकता है जो एक्स. एम. एल. को सपोर्ट करता है। साथ ही, कोई भी कम्पोनेन्ट जो डाटासेट स्ट्रक्चर को पढ़ सकता है डाटा को प्रोसेस भी कर सकता है।

4- डाटा कमाण्ड्स (Data Commands) – डाटाबेस पर सभी क्रियाएँ डाटा कमाण्ड के माध्यम से होता है। डाटा कमाण्ड एक एस. क्यू. एल. स्टेटमेण्ट या फिर एक संग्रहीत प्रोसीजर हो सकता है। डाटा कमाण्ड को एक्जिक्यूट कर आप डाटाबेस से डाटा को प्राप्त कर सकते हैं, डाटा प्रविष्ट कर सकते हैं, डाटा मिटा सकते हैं या उसमें संशोधन कर सकते हैं।

एडू तथा एडू डॉट नेट (ADO and ADO.NET)

एडू तथा एडू डॉट नेट दोनों के मध्य जो सबसे बड़ा अंतर है, वह इसके आर्किटेक्चर का है। एडू संयोजित डाटा आर्किटेक्चर (connected data architecture) का अनुसरण करता है, जबकि एडू डॉट नेट असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) का पालन करता है। आइए इस खण्ड में हम इन दोनों का तुलनात्मक दृष्टिकोण देखते हैं।

1 डाटा का इन मेमोरी रेप्रेजेण्टेशन (In memory Representation of Data) – एडू में डाटा को व्यक्त करने के लिए रिकॉर्ड सेट (RecordSet) का प्रयोग होता था। एडू डॉट नेट में इसके लिए डायसेट (DataSet) है।

2- टेबल की संख्या (Number of Tables)(a) रिकॉर्ड सेट एक तालिका के जैसा दिखता है। यदि रिकॉर्ड सेट को कई डाटाबेस टेबल से डाटा प्राप्त करना होना था तो यह Join क्वेरी का प्रयोग करता था। इसके विपरीत डाटासेट एक या एक से अधिक टेबल का संकलन होता है। डाटासेट के अंदर के टेबल को डाटा टेबल कहा जाता है। इन्हें विशेषतः डाटाटेबल ऑब्जेक्ट्स (Datatable Objects) की तरह समझा जाता है।

यदि डाटासेट को एक से अधिक डाटाबेस टेबल से डाटा लेना होता है तो यह उसी अनुसार (एक से अधिक) डाटाटेबल ऑब्जेक्ट रखता है अर्थात् प्रत्येक डाटाटेबल ऑब्जेक्ट एक डायबेस टेबल या व्यू व्यवहार करता है। इस प्रकार डाटासेट उस डाटाबेस की संरचना की एक प्रति के तरह कार्य करता है।

(b) डायसेट के मध्य आमतौर पर संबंध होते हैं। डाटासेट के संबंध डाटाबेस के फॉरेन की संबंध के समान होते हैं, अर्थात् यह टेबल के रिकॉर्ड को एक-दूसरे के साथ संबद्ध (associated) रखता है। उदाहरण के लिए, यदि कोई डायसेट Investors टेबल रखता है तथा दूसरा टेबल Purchases प्रत्येक निवेशक के स्टॉक खरीददारी (purchase) पर टेबल रखता है तो यह Investors टेबल के प्रत्येक रो (पंक्ति) को Purchases टेबल के संबंधित रो के साथ जोड़कर एक रिलेशनशिप रख सकता है, क्योंकि डाटासेट एक से अधिक, अलग-अलग टेबल को रख सकता है तथा उनके मध्य संबंधों के बारे में सूचना को मेनटेन करता है।

यह रिकॉर्ड सेट के अपेक्षाकृत एक से एक टेबल तथा कई-से-कई संबंध के टेबलों के साथ अधिक बेहतर डाटा स्ट्रक्चर दे सकता है। एड से आप रिकॉडसेट के पंक्तियों को MoveNext मेथड का प्रयोग कर एक-एक करके स्कैन करते हैं। एड डॉट नेट में रो संकलन की तरह व्यक्त होते हैं। इसलिए पूरे टेबल को लूप कर सकते हैं, जैसा कि आप किसी अन्य संकलन के साथ करते हैं या किसी विशेष रो को ऑर्डिनल या records) के बारे में सूचना मेनटेन करते हैं तथा एक मेथड उपलब्ध कराते हैं, जो उन रिकॉर्ड को प्राप्त करने की प्राइमरी की इंडेक्स के माध्यम से एक्सेस कर सकते हैं।

DataRelation ऑब्जेक्ट्स मास्टर तथा विस्तृत रिकॉर्ड (detai) अनुमति देते हैं, जिनके साथ आप कार्य कर रहे हैं। उदाहरण के लिए Investors टेबल के उस रो से शुरू करके जिसमें A.Brijesh हैं आप Purchases टेबल के उन पंक्तियों के सेट को नेविगेट कर सकते हैं जो उसके खरीदारी का ब्यौरा देता हो।

कर्सर वह डाटाबेस एलिमेन्ट है जो अन्य यूजर द्वारा रिकॉर्ड नेविगेशन को, डाटा अपडेट करने की क्षमता को तथा डाटाबेस में बदलाव की विजिबिलिटी को नियंत्रित करता है। एड डॉट नेट में इनहेरेण्ट कर्सर ऑब्जेक्ट नहीं होता है, बल्कि डाटा क्लास सम्मिलित होते हैं, जो एक सामान्य कर्सर की फंक्शनेलिटि को उपलब्ध कराता है। के लिए एडू डॉट नेट DataReader ऑब्जेक्ट में कर्सर की फॉरवर्ड ओनली, रीड ऑनली फंक्शनेलिटि उपलब्ध है।

3- न्यूनतम ओपन कनेक्शन (Minimize Open Connections)(a) एडू डॉट नेट में आप कनेक्शन को तब तक ही खोले रहते हैं, जब तक Select या Update जैसे डाटाबेस ऑपरेशन को सम्पन्न करते हैं। आप डाटासेट में पंक्तियों को पढ़ सकते हैं, उनके साथ कार्य कर सकते हैं तथा इनके लिए डाटाबेस के कनेक्शन को सक्रिय रखने अर्थात् खोले रखने की आवश्यकता नहीं है। एडू में भी रिकार्डसेट असंयोजित एक्सेस (disconnected access) प्रदान कर सकता है, परन्तु एडु को खासकर संयोजित एक्सेस के लिए ही डिजायन किया गया है।

(b) एडू तथा एडू डॉट नेट के असंयोजित प्रोसेसिंग के मध्य एक महत्त्वपूर्ण अंतर है। एडू में डाटाबेस के साथ कम्यूनिकेट करने के लिए OLE DB प्रोवाइडर को कॉल करते हैं। एडू डॉट नेट में आप डाटा अडैप्टर के माध्यम से डाटाबेस के साथ कम्यूनिकेट करते हैं।

OleDbDataAdapter, SqlDataAdapter, OdbcDataAdapter या OracleDataAdapter ऑब्जेक्ट ओ.एल.ई.डी.बी. (OleDb), एस. क्यू. एल., ओ.डी.बी.सी. (ODBC) या ओरेकल के क्रमशः डाटा अडैप्टर ऑब्जेक्ट हैं जो ओ.एल.ई.डीबवी. प्रोवाइडर या संबंधित डाटा सोर्स के द्वारा प्रदान किये गये ए, पी. आई. को कॉल करते हैं।

इसमें महत्त्वपूर्ण फर्क यह है कि एडू डॉट नेट में डाटा अडैप्टर की सहायता से आप डाटाबेस को डाटासेट में किये गये बदलाव कैसे ट्रांसमीट हो इसको नियंत्रित करते हैं। ऐसा परफॉरमेन्स के लिए ऑप्टीमाइज़र का डाटा वैलिडेशन चेक्स परमॉरम कर, या किसी अन्य अतिरिक्त प्रोसेसिंग को जोड़कर करते हैं।

नोट : डाटा अडैप्टर, डाटा कनेक्शन, डाटा कमाण्ड तथा डाटा रीडर वे कम्पोनेण्ट है जो एक डॉट नेट फ्रेमवर्क डाय प्रोवाइडर को बनाते हैं। माइक्रोसॉफ्ट तथा तृतीय पक्ष प्रोवाइडर अन्य डॉट नेट फ्रेमवर्क प्रोवाइडर उपलब्ध करा सकते हैं, जिन्हें विजुअल स्टूडियो में इंटिग्रेट किया जा सके।

4- एप्लिकेशन के मध्य डाटा शेअर करना (Sharing Data Between Applications) – एप्लिकेशन के मध्य एडू डॉट नेट डाटासेट को ट्रांसमीट करना एडू डिस्कनेक्टेड रिकॉडसेट को ट्रांस्मीट करने से कहीं अधिक आसान है। एडू डिस्कनेक्टेड रिकॉर्डसेट को एक कम्पोनेण्ट से दूसरे कम्पोनेण्ट तक ट्रांस्मीट करने के लिए आप कॉम मार्शलिंग (COM Marshalling) का उपयोग करते हैं। एडू डॉट नेट में डाटा को ट्रांस्मीट करने के लिए आप डाटासेट का उपयोग करते हैं जो एक्स. एम. एल. स्ट्रीम को ट्रांस्मीट कर सकता है।

एक्स. एम. एल. फाइल के ट्रांस्मीशन का कॉम मार्शलिंग की अपेक्षा निम्नलिखित फायदे हैं कॉम मार्शलिंग कॉम स्टैण्डर्ड द्वारा परिभाषित डाटा टाइप का सीमित सेट उपलब्ध करता है। क्योंकि एडू डॉट नेट में डाटासेट का ट्रांस्मीशन एक्स. एम. एल. फॉरमेट पर आधारित होता है। इसलिए इसमें डाटा टाइपस (data types) की कोई सीमा नहीं है। इस प्रकार डाटासेट को शेअर करने वाले कम्पोनेण्ट्स सामान्यतः उपयोग किये जाने वाले डाटा टाइपस से कहीं अधिक डाटा टाइपस का उपयोग कर पाते हैं।

5- परफॉरमेन्स (Performance) – बड़े एडू रिकॉर्डसेट या बड़े एडू डॉट नेट डाटासेट के ट्रांस्मीशन नेटवर्क संसाधनों की ज्यादा खपत करते हैं तथा जैसे-जैसे डाटा की मात्रा बढ़ती है नेटवर्क पर दबाव भी बढ़ता है। एडू तथा एडू डॉट नेट दोनों आपको इस दबाव को न्यूनतम करने की अनुमति देते हैं कि कौन सा डाटा ट्रांस्मीट हो।

लेकिन एड् डॉट नेट एक अन्य परफॉरमेन्स लाभ उपलब्ध कराता है जिसमें एडू डॉट नेट को डाटा टाइप रूपांतरण (conversions) की आवश्यकता नहीं होती है। एड् जो कम्पोनेण्ट के मध्य रिकॉर्ड सेट को ट्रांसमीट करने के लिए कॉम मारशलिंग का उपयोग करते हैं को एडू डाटा टाइप को कॉम डाटा टाइप्स में बदलने की आवश्यकता पड़ती है।

6- फायरवॉल को भेदना (Penetrating Firewalls) – फायरवॉल असंयोजित एडू रिकॉर्डसेट को ट्रांस्पीट करने का प्रयास करने वाले कम्पोनेण्ट्स के साथ हस्तक्षेप करते हैं। याद रखें कि फायरवॉल को एच. टी. एम. एल. टेक्स्ट को पास होने देने के लिए सामान्यतः कनफिगर किया जाता है परन्तु ये कॉम मार्शलिंग जैसे सिस्टम स्तर के आग्रहों को पास करने से रोकता है क्योंकि कम्पोनेण्ट्स एक्स. एम. एल. का उपयोग कर एडू डॉट नेट डाटयसेट्स का आदान प्रदान करते हैं। फायरवॉल डाटासेट्स को पास करने में हस्तक्षेप नहीं करते हैं।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम वी. बी. डॉट नेट पार्ट-4 | Object Oriented Programming – Best Info

0
ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है एवं विशेषताएं | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम वी. बी. डॉट नेट | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | Object Oriented Programming In Hindi
ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है एवं विशेषताएं | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम वी. बी. डॉट नेट | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | Object Oriented Programming In Hindi

ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है एवं विशेषताएं | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम वी. बी. डॉट नेट | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | Object Oriented Programming In Hindi

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम परिचय (Introduction)वी०वी० डॉट नेट के बारे में यह कहा जाता है कि यह सम्पूर्ण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा है। ऐसा दावा शत प्रतिशत प्रदत्त प्रोग्रामिंग के सभी कसौटी पर वी. बी. डॉट नेट खड़ा उतरता है। इस अध्याय में हम आपको इसके ऑब्जेक्ट ओरिएंटेड सही है। वी. बी. डॉट नेट में वह सारी चीजें हैं, जो एक ऑब्जेक्ट ओरिएंटेड भाषा में होनी चाहिए। बल्कि मैं यह कहूँ कि ऑब्जेक्ट प्रोग्रामिंग भाषा होने से संबंधित बातें बताने जा रहा हूँ।

इस पार्ट-4 में हम जानेगे :- नेमस्पेस (Namespace), Imports का उपयोग करना (Using Imports), कंस्ट्रक्टर (Constructor), डिस्ट्रक्टर (Destructor) 

नेमस्पेस (Namespace)

प्रोग्रामिंग के पूर्व के दिनों में एक ही नाम के वेरियेबल त्रुटि अथवा अन्य समस्याओं के लिए एक साधारण स्रोत थे। Name या Address जैसे समान शब्दों को वेरियेबल नाम के रूप में उपयोग करना खासकर खतरनाक था। प्रोग्रामर इस समस्या से निबटने के लिए वेरियेबल के नाम के पहले या बाद में कुछ जोड देते थे।

आधुनिक प्रोग्रामिंग भाषाएँ इस तरह की समस्या से कम ग्रस्त हैं। ऑब्जेक्ट की भूमिका इसमें महत्वपूर्ण है। क्यों अधिकत वेरियेबल ऑब्जेक्ट के नाम के साथ ही जाने जाते हैं। उदाहरण के लिए, Student. Name तथा Student.Addres Student क्लास के साथ वेरियेबल Name तथा Address रेफर किये जा रहे हैं। परन्तु यदि माइक्रोसॉफ्ट Student नाम क्लास डॉट नेट फ्रेमवर्क में जोड़ देता है, तो या फिर आप कोई तृतीय पक्ष लायब्रेरी इंस्टॉल करते हैं जिससे Student क्लास उपलब्ध है तो? उसी समस्या के समाधान के लिए नेमस्पेस है।

नेमस्पेस मात्र एक कनटेनर है, जो क्लासों को एक साथ एक अलग पहचान देकर रखता है। उदाहण के तौर पर चित्र में तीन कनटेनर हैं।

तीनों कनटेनर में Student क्लास कॉमन है। अब Container 1. Student, Container 2. Student, Container 3. Student के साथ ही इनके वेरियेबल भी अलग कर सकते हैं। इस प्रकार-
Container 1. Student Name
Container 2. Student Name
Container 3. Student Name

विजुअल बेसिक डॉट नेट प्रोजेक्ट में एक मूल नेमस्पेस होता है, जो बाई डिफोल्ट प्रोजेक्ट का नाम होता है। यदि Student क्लास TECHS HINDI नामक प्रोजेक्ट में है, तो आप इसे TECHS_HINDI Studnet से रेफर कर सकते हैं।

1- नेमस्पेस बनाना (Creating A Namespace)– आप नेमस्पेस इस सामान्य प्रारूप के आधार पर बना सकते हैं। नेमस्पेस बनाने में मॉड्यूल या फंक्शन की तरह ही दो स्टेटमेण्ट का होना आवश्यक होता है। तथा बाकी कोड उन दोनों स्टेटमेण्ट के बीच में रखते हैं। इसका प्रारूप इस प्रकार है-
Namespace <name of the namespace>
Class <ClassName>
——-
End Class
End Namespace

उदाहरणार्थ :
Namespace Namespace1
Class Student
End Class
End Namespace

ऐसा करने के बाद Student को Namespace1. Student ALISHA_TECHNOLOGIES. Namespace1.Student से रेफर कर सकते हैं | आप एक ही नेमस्पेस को एक से अधिक क्लास में एक से अधिक क्लासों को एक साथ ग्रुप करने में कर सकते हैं।

2- नेमस्पेस को कॉल करना (Calling A Namespace) – नेमस्पेस को किसी प्रोजेक्ट से कॉल करने के लिए Imports की-वर्ड का प्रयोग होता है। उदाहरण के लिए, यदि आप अपने प्रोजेक्ट में Mynamespace1 को कॉल करना चाहते हैं, ताकि उसके क्लास का उपयोग हो सके, तो आप यह इस प्रकार कर सकते हैं-
Imports TECHS_HINDI. Mynamespace1

हालांकि यह आवश्यक नहीं कि आप इम्पोर्ट करें ही। लेकिन इसके लिए कुछ अधिक कोड लिखना होगा, जो समझदारी नहीं है। 

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम हिंदी में | ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज क्या है? | Procedure Oriented Programming

ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है एवं विशेषताएं | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम वी. बी. डॉट नेट | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | Object Oriented Programming In Hindi
ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है एवं विशेषताएं | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम वी. बी. डॉट नेट | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | Object Oriented Programming In Hindi

Imports का उपयोग करना (Using Imports)

जैसाकि पीछे बताया कि Imports का उपयोग हम नेमस्पेस को अपने प्रोजेक्ट में कॉल करने के लिए करते हैं। Importaस्टेट फाइल के शुरू में डिक्लेयरेशन से पहले होता है। इसका अर्थ यह है कि एक खास नेमस्पेस के अंदर कोई क्लास या अन्य टाइप बगैर इसका पूरा नाम दिए हुए स्वत: ही पाया जाता है उदाहरण के लिए-
Imports TECHS_HINDI Namespace1
स्टेटमेंट देने के बाद Book 1 Book

कंस्ट्रक्टर (Constructor)

कंस्ट्रक्टर एक विशेष सदस्य फंक्शन है जिसका कार्य क्लास के ऑब्जेक्ट को इनिशिअलाइज (initialize) करना है। यह पहला मेथड होता है जो किसी टाइप का इंस्टैन्स बनने पर रन होता है। जब जब संबंधित क्लास का ऑब्जेक्ट बनता है कंस्ट्रक्टर इन्वोक होता है। यदि किसी क्लास में कंस्ट्रक्टर उपस्थित है तब तो क्लास के द्वारा बनाया गया ऑब्जेक्ट स्वतः इनिशिअलाइज हो जायगा।

ऑब्जेक्ट बनाते समय हम कंस्ट्रक्ट को डाटा पास करने के लिए क्लास के नाम के बाद पैरेनथेसिस (parentheses) में उस कंस्ट्रक्टर को डाटा पास करते हैं। कंस्ट्रक्टर कभी भी मान नहीं लौटा सकता है परन्तु इसे कस्टम इनिशिअलाइजेशन फंक्शनैलिटि प्रदान करने हेतु ओवरराइड (override) किया जा सकता है। वी. बी. डॉट नेट में हम कंस्ट्रक्टर बनाने के लिए क्लास में New नाम का एक सब प्रोसीजर जोड़ते हैं।

बी. बी. डॉट नेट के नये प्रोग्रामर कंस्ट्रक्टर पर अधिक ध्यान नहीं देते हैं। वे ऐसा इसलिए भी समझते हैं क्योंकि क्लास बगैर कंस्ट्रक्टर के भी कार्य करने के योग्य होता है। तथा कुछ डॉट नेट प्रोग्रामर कंस्ट्रक्टर को केवल एक प्रकार का मेथड मात्र समझते है जो बिल्कुल सही नहीं है।

क्लास से किसी ऑब्जेक्ट का निर्माण के लिए क्लास को कंस्ट्रक्टर की आवश्यकता होती है। एक दृष्टि में कंस्ट्रक्टर मेथड की तरह ही दिखता है। किन्तु कंस्ट्रक्टर का मूल उद्देश्य क्लास के इंस्टैन्स का निर्माण करना है। कंस्ट्रक्टर के मुख्य फीचर इस प्रकार हैं-

  1. कंस्ट्रक्टर को हमेशा सब प्रॉसीजर के रूप में परिभाषित किया जाता है। इसलिए इसका कोई रिटर्न मान नहीं होता है।
  2. क्लास का नाम चाहे कोई भी हो वी. बी. डॉट में कंस्ट्रक्टर New ही से संबोधित होता है।
  3. कंस्ट्रक्टर कोई भी एक्सेस मॉडिफायर यथा Public, Protected, Friend, Private रख सकता है।
  4. अधिकतर स्थितियों में कंस्ट्रक्टर Public एक्सेस मॉडिफायर ही रखता है।
  5. एक क्लास में कई कंस्ट्रक्टर हो सकते हैं।

उदाहरण के लिए Employee नाम का एक क्लास लिखते हैं। इसका कोड इस प्रकार है-
Public Class Employee
Public Sub Work()
System.Console.WriteLine(“I am working.”)
End Sub
End Class 

New कीवर्ड  का उपयोग कर Employee टाइम का एक(instantiate) कर सकते हैं। इस प्रकार –
Dim employee As Employee
employee New Employee()
employee. Work()

उपरोक्त कोड में Employee क्लास परिभाषा में Work मेथड के अतिरिक्त कुछ नहीं है। फिर भी आप Employee ऑब्जेक्ट बना सकते हैं। यह मेरे पिछले स्टेटमेण्ट से मेल नहीं खाता क्योंकि पिछले स्टेटमेण्ट के अनुसार आपको क्लास का ऑब्जेक्ट बनाने के लिए कंस्ट्रक्टर की आवश्यकता होती है। यहाँ होता यह है कि बी. बी. कम्पाइलर जब क्लास को रन करता है तब यह कंस्ट्रक्टर की उपस्थिति की जाँच करता है।

यदि यह क्लास के अंदर कंस्ट्रक्टर नहीं पाता है तो स्वतः ही एक आर्ग्यूमेण्ट रहित (no argument) कस्ट्रक्टर क्लास में जोड़ देता है। इसीलिए पिछला Employee क्लास की कोडिंग इस कोडिंग के बराबर है-

Public Class Employee
Public Class New (0
End Sub
Public Sub Work()
System.Console.WriteLine(“I am working”)
End Sub
End Class

किन्तु यदि क्लास में कंस्ट्रक्टर मौजूद है तथा इसमें आर्ग्यूमेण्ट हो अथवा न हो कम्पाइलर आर्ग्यूमेण्ट रहित कंस्ट्रक्टर नहीं जोड़ेगा। उदाहरण के लिए आप इस क्लास को देखें-
Public Class Employee
Sub New (By Val name As String)
End Sub
Public Sub Work()
System.Console.WriteLine(“I am working”)
End Sub
End Class

आप निम्नलिखित कोड का उपयोग कर Employee ऑब्जेक्ट नहीं बना सकते-
Dim employee As Employee
employee = New Employee()


क्योंकि अब Employee क्लास में कोई आर्ग्यूमेण्ट रहित कंस्ट्रक्टर नहीं है। वी. बी. में कंस्ट्रक्टर को Sub के रूप में डिक्लेअर होना चाहिए तथा अधिकतर स्थितियों में इसका एक्सेस मॉडिफायर Public होता है। परन्तु कंस्ट्रक्टर में Protected, Private, Friend या डिफॉल्ट मॉडिफायर भी हो सकता है।

डिस्ट्रक्टर (Destructor)

डिस्ट्रक्टर या फाइनलाइजर क्लास के द्वारा रन किया जाने वाला अंतिम मेथड होता है। डिस्ट्रक्टर के अंदर आप उपयोग रहित जिनका उपयोग होना अब शेष नहीं है को समाप्त करने के लिए कोड रख सकते हैं। विजुअल बेसिक डॉट नेट में इसके लिए Finalize मेथड का उपयोग होता है। Finalize मेथड स्वतः ही कॉल होता है जब वी. बी. डॉट नेट रनटाइम है। यह समझता कि अब इस ऑब्जेक्ट की आवश्यकता नहीं है।

डिस्ट्रक्टर्स के साथ कार्य करते समय हमें Finalize मेथड के साथ Overrides कीवर्ड की आवश्यकता होती है क्योंकि हम ऑब्जेक्ट क्लास में बने Finalize मेथड को ओवरराइड करेंगे। हम सामान्यत: Finalize मेथड का उपयोग संसाधनों को मुक्त करने तथा अन्य ऑब्जेक्ट को यह बताने के लिए कि वर्तमान ऑब्जेक्ट समाप्त होने जा रहा है के लिए करते हैं। निम्नलिखित कोड Pinalize मेयड के उपयोग को दर्शाता है –

Module Module 1
Sub Main()

Dim obj As New Destructor()
End Sub
End Module
Public Class Destructor()
Protected Overrides Sub Finalize()
Wiite (“hello”)
Read()
End Sub End Class

आपने इस पूरे पार्ट 1 से 4 तक में क्या सीखा (What Did You Learn Today)

  • वी. बी. डॉट नेट के बारे में यह कहा जाता है कि यह सम्पूर्ण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा है। ऐसा दावा शत प्रतिशत सही है। वी. बी. डॉट नेट में वह सारी चीजें हैं, जो एक ऑब्जेक्ट ओरिएंटेड भाषा में होनी चाहिए।
  • ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में आप डाटा को उसी तरह व्यवस्थित करते हैं जिस प्रकार किसी नर्सरी में उस का प्रबंधक विभिन्न प्रकार के पौधों को सजाकर रखता है।
  • ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में डाटा ऑब्जेक्ट की भांति होते हैं तथा इसका प्राथमिक फोकस प्रोसीजर के बजाय डाटा पर होता है। डाटा को सिस्टम में स्वतंत्रता के साथ विचरित नहीं किया जा सकता है किन्तु यह बहुत निकटता से फंक्शन के साथ जुड़ा होता है।
  • ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग पैराडाइम (Paradigm) में प्रोग्राम निकायों (entities) में विभाजित होते हैं जिन्हें ऑब्जेक्ट कहते हैं।
  • ऑब्जेक्ट वास्तविक दुनिया एन्टिटि (Entity) का ऐबस्ट्रैक्शन (abstraction) होता है। यह किसी व्यक्ति, किसी स्थान, कोई संख्या, कोई आइकन, कोई विण्डो, किसी ब्राउजर, किसी सूची, वेक्टर या ऐसी किसी चीज को जिसे प्रतिरूपित (model) किया जा सकता हो को इंगित करता है।
  • प्रत्येक डाटा एक ऑब्जेक्ट होता है। यहाँ तक कि प्रयोक्ता परिभाषित डाटा टाइप को भी ऑब्जेक्ट के रूप में व्यक्त किया जा सकता है।
  • क्लास समान फीचर वाले ऑब्जेकट का एक संकलन होता है। हम कह सकते हैं कि क्लास एक तरह के ऑब्जेक्ट का विवरण होता है, जो इतने समान होते हैं कि वे बिल्कुल समान तरीके से व्यवहार करते हैं।
  • क्लास यूजर परिभाषित डाटा टाइप होता है, जो डाटा को मनिप्यूलेट करने वाले डाटा सदस्यों तथा फंक्शनों को रखता है। क्लास के एक बार परिभाषित होने के बाद यह संभव होता है कि उस क्लास के लिए जितना ऑब्जेक्ट चाहे बना लें। प्रत्येक ऑब्जेक्ट को उस क्लास का इंस्टैन्स (instance) कहा जाता है।
  • ऐब्स्ट्रेक्शन ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का एक आवश्यक अवयव है। यह सिस्टम से विवरण (details) या ब्योरे (explanations) को अलग करने का नाम है, ताकि आवश्यकताओं को समझने की जटिलता कम हो सके। अर्थात् बैकग्राउण्ड ब्योरे को शामिल किये बगैर आवश्यक फीचरों को व्यक्त किया जा सके। 
  • एनकैप्सुलेशन वह विधि है, जो डाटा तथा फंक्शनों को एक साथ कैप्सूल या पैक में रखता है। इसका उद्देश्य उपयोगकर्ता से ऑब्जेक्ट के कार्यान्वयन ब्योरे (implementation details) को छिपाना होता है।
  • एनकैप्सुलेशन का सबसे बढ़िया उदाहरण वह कैप्सूल है जो आपने कभी बीमारी के समय लिया होगा या देखा होगा। कैप्सूल के अंदर क्या है वह बाहर से नहीं दिखता। कैप्सूल के अंदर की औषधि को हम डाटा तथा फंक्शन समझ सकते हैं।
  • इनहेरिटेन्स ऑब्जेक्ट के दो क्लासों के बीच का संबंध होता है। यह संबंध इस प्रकार होता है कि चाइल्ड क्लास पेरेन्ट क्लास के सभी प्रासंगिक फीचरों को प्राप्त कर ले। चाइल्ड को सब क्लास तथा पेरेण्ट क्लास को सुपर क्लास कहा जाता है।
  • डाटा ऐब्स्ट्रैक्शन वस्तुतः डाटा एनकैप्सुलेशन का दूसरा मेनिफेस्टेशन (manifestation) है। पुनकैप्सुलेटेड सामान्य व्यू से छिपे होते हैं, परन्तु एक ही क्लास के फंक्शनों को दृश्य (visible) होते हैं।
  • इनहेरिटेन्स एक ऐसी प्रक्रिया है जिसमें एक क्लास (चाइल्ड अथव व्युत्पन्न क्लास) किसी दूसरे क्लास (पैरेंट अथवा आधार क्लास) के प्रॉपर्टी, मेथड तथा इवेण्ट को इनहेरिट करता है। चाइल्ड क्लास अपने प्रॉपटी, मेथड तथा इवेंट को एक्सेस करने के अतिरिक्त पेरेण्ट क्लास के भी प्रॉपर्टी, मेथड तथा इवेण्ट को एक्सेस कर सकता है।
  • पेरेण्ट क्लास तथा इसके व्युत्पन्न क्लास के पूरे संकलन को हायरैरकि (hierarchy) कहते हैं।
  • इनहेरिटेन्स के उपयोग करने के दो लाभ हैं। पहला, तो यह है कि इससे दो या अधिक क्लास एक दूसरे से भिन्न होने के बावजूद कुछ समान फीचरों को शेयर कर पाता है। दूसरा यह कि इससे एक ही कोड को पुन: उपयोग में लाया जा सकता है। जिसे हम कोड रियूजेबिलिटी (Code Reusability) कहते हैं।
  • पॉलिमॉरफिजम का शाब्दिक अर्थ बहुरूपी अर्थात कई रूपों वाला होता है। कहने का तात्पर्य यह है कि उपस में एक ही एनटिटि के कई रूप हो सकते हैं।
  • विजुअल बेसिक पाँच एक्सेस स्पेसिफायर यथा Public, Private, Protected, Friend तथा Protected Friend उपलब्ध कराता है।
  • एक्सेस स्पेसिफायर किसी ऑब्जेक्ट तथा इसके सदस्यों की एक्सेसिबिलिटी के स्कोप का वर्णन करता है। हम एक्सेस स्पेसिफायर का उपयोग कर क्लास के मेम्बर ऑब्जेक्ट के स्कोप को नियंत्रित कर सकते हैं। हम एक्सेस स्पेसिफायर का उपयोग अपने एप्लिकेशन के डाटा को सुरक्षित रखने के उद्देश्य से करते हैं।
  • Public स्पेसिफायर डॉट नेट का सबसे सामान्य एक्सेस स्पेसिफायर है। इसे कहीं से भी एक्सेस किया जा सकता है। अर्थात् इसकी एक्सेसिबिलिटी (accessibility) पर कोई प्रतिबंध नहीं होता है।
  • Protected की-वर्ड डिक्लेअरेशन स्टेटमेण्ट में यह स्पष्ट करता है कि अवयव केवल उसी क्लास के अंदर या उस क्लास के व्युत्पन्न क्लास से ही केवल एक्सेसिबल होता है।
  • Friend की-वर्ड का उपयोग डिक्लेअरेशन स्टेटमेण्ट में यह बताता है कि अवयव केवल समान असेम्बली के अंदर ही एक्सेसिबल है। इन्हें असेम्बली के बाहर से एक्सेस नहीं किया जा सकता है।
  • आप किसी डिक्लेअरेशन स्टेटमेण्ट में एक साथ Protected तथा Friend दोनों एक्सेस स्पेसिफायर का उपयोग कर सकते हैं। दोनों की-वर्ड का उपयोग यह बताता है कि अवयव या तो व्युत्पन्न क्लास से या फिर समान असेम्बली से एक्सेसिबल होते हैं।
  • डिक्लेअरेशन स्टेटमेण्ट में Private की-वर्ड स्पष्ट करता है कि अवयव केवल मॉड्यूल, क्लास या स्ट्रक्चर से एक्सेसिबल हो।
  • वी. बी. डॉट नेट में प्रॉपर्टी कुछ नहीं केवल डाटा फील्ड्स का प्राकृतिक विस्तारण (natural extension) मात्र है। वे आमतौर पर वी. बी. डॉट नेट कम्युनिटि में स्मार्ट फील्ड (smart fields) के नाम से जाने जाते हैं।
  • वी. बी. डॉट नेट स्टैटिक प्रॉपर्टी को सपोर्ट करता है जो क्लास के ऑब्जेक्ट से नहीं बल्कि क्लास से संबंधित होता है। स्टैटिक मेम्बर पर लागू होने वाले सभी नियम स्टैटिक प्रॉपर्टी पर भी लागू होते हैं। 
  • My Base कीवर्ड का उपयोग क्लास के वर्तमान ऑब्जेक्ट के मूल आधार क्लास को इंगित करने के लिए होता है। उदाहरण के लिए यदि Class2 Class1 से इन्हेरिट होता है तो class1 class2 का आधार क्लास कहा जाता तथा class 2 class 1 के व्युत्पन्न क्लास कहलाता है। Class1 के रेफरेंस class2 के कोड MyBase कीवर्ड की सहायता से दिया जाता है।
  • कंस्ट्रक्टर एक विशेष सदस्य फंक्शन है जिसका कार्य क्लास के ऑब्जेक्ट को इनिशिअलाइज (initialize) करना है। यह पहला मेथड होता है जो किसी टाइप का इंस्टैन्स बनने पर रन होता है।
  • कंस्ट्रक्टर को हमेशा सब प्रॉसीजर के रूप में परिभाषित किया जाता है। इसलिए इसका कोई रिटर्न मान नहीं होता है।
  • क्लास का नाम चाहे कोई भी हो वी. बी. डॉट में कंस्ट्रक्टर New ही से संबोधित होता है।
  • डिस्ट्रक्टर या फाइनलाइजर क्लास के द्वारा रन किया जाने वाला अंतिम मेथड होता है। डिस्ट्रक्टर के अंदर आप उपयोग रहित जिनका उपयोग होना अब शेष नहीं है को समाप्त करने के लिए कोड रख सकते हैं।
  • ओवरलोडिंग वी. बी. डॉट नेट का एक बहुत ही बढ़िया फीचर है जिसकी वी. बी. 6.0 में कमी थी। इसकी सहायता से आप एक ही मेथड के कई संस्करण बना सकते हैं। मेथड के नाम तो एक ही होते हैं परन्तु उसके आर्ग्यूमेण्ट सूची (argument list) अलग अलग होते हैं।
  • Overridable की-वर्ड का प्रयोग उन पेरेण्ट मेथड को असाइन करने से होते हैं, जो ओवररारड किए जाते हैं तथा Overrides की-वर्ड का उपयोग उन चाइल्ड मेथडों को असाइन करने में होता है, जो ओवरराइडिंग कर रहे हैं।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा वी. बी. डॉट नेट पार्ट-3 | Object Oriented Programming – Best Info

0
ऑब्जेक्ट ओरिएंटेड लैंग्वेज क्या है? | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है एवं उपयोग | Object Oriented Programming Language In Hindi
ऑब्जेक्ट ओरिएंटेड लैंग्वेज क्या है? | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है एवं उपयोग | Object Oriented Programming Language In Hindi

ऑब्जेक्ट ओरिएंटेड लैंग्वेज क्या है? | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है एवं उपयोग | Object Oriented Programming Language In Hindi

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा परिचय (Introduction)वी०वी० डॉट नेट के बारे में यह कहा जाता है कि यह सम्पूर्ण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा है। ऐसा दावा शत प्रतिशत प्रदत्त प्रोग्रामिंग के सभी कसौटी पर वी. बी. डॉट नेट खड़ा उतरता है। इस अध्याय में हम आपको इसके ऑब्जेक्ट ओरिएंटेड सही है। वी. बी. डॉट नेट में वह सारी चीजें हैं, जो एक ऑब्जेक्ट ओरिएंटेड भाषा में होनी चाहिए। बल्कि मैं यह कहूँ कि ऑब्जेक्ट प्रोग्रामिंग भाषा होने से संबंधित बातें बताने जा रहा हूँ।

इस पार्ट-3 में हम जानेगे :- ऐब्स्ट्रैक्ट क्लास (Abstract Class), माईबेस कीवर्ड (MyBase Keyword), माईक्लास कीवर्ड (MyClass Keyword), मॉड्यूल (Module)

ऐब्स्ट्रैक्ट क्लास (Abstract Class)

ऐब्स्ट्रैक्ट क्लास वैसा क्लास होता है जिसके आधार पर ऑब्जेक्ट का निर्माण नहीं होता है। इस क्लास को आधार (base)  क्लास की तरह ही डिजायन किया जाता है जिसे अन्य क्लासों द्वारा इनहेरिट किया जा सकता है। ऐब्स्ट्रैक्ट क्लास प्रोग्राम विकास में डिजायन की एक अवधारणा (concept) है तथा अन्य क्लासों को बनाने हेतु यह एक आधार देता है। ऐब्स्ट्रैक्ट क्लास इंटरफेस के समान होता है। एब्स्ट्रैक्ट क्लास को डिक्लेअर करने के बाद इसके खुद का ऑब्जेक्ट नहीं बनाया जाता बल्कि इसे इनहेरिट किया जाता है।

इंटरफेस की तरह एब्स्ट्रैक्ट क्लास मेम्बर निर्धारित कर सकता है जिसे इंहेरिट करने वाले क्लास लागू करते हैं। इंटरफेस के विपरीत एक ही क्लास एब्स्ट्रैक्ट क्लास को इनहेरिट कर सकता है। एब्स्ट्रैक्ट क्लास केवल उन्हीं सदस्यों को स्पष्ट कर सकता है जिन्हें इनहेरिट कर रहे क्लास लागू करें। 

1- ऐब्स्ट्रैक्ट क्लास बनाना (Creating An Abstract Class) – वी. बी. डॉट नेट  में ऐब्स्ट्रैक्ट क्लास का निर्माण Mustinherit की-वर्ड का उपयोग करके बनाते हैं। ऐब्स्ट्रैक्ट क्लास किसी अन्य क्लास की तरह जितना भी मेम्बर चाहे स्पष्ट कर सकता है। ऐब्स्ट्रैक्ट क्लास के सदस्य या तो ओवरराइड किये जा सकते हैं (अर्थात् सभी व्युत्पन्न क्लास इन मेम्बर का अपना संस्करण बना सकते हैं।) या फिर ये अपरिवर्तनीय हो सकते हैं जो सभी व्युत्पन्न क्लास के लिए समान होगा। ऐब्स्ट्रैक्ट क्लास ऐब्स्ट्रैक्ट मेंम्बर भी स्पष्ट कर सकते हैं।

ऐब्स्ट्रैक्ट क्लास की तरह ही ऐब्स्ट्रैक्ट मेंम्बर अपने इम्प्लीलीमेंटेशन की कोई जानकारी प्रदान नहीं करते हैं। केवल मेम्बर टाइप, एक्सेस स्तर आवश्यक पैरामीटर तथा रिटर्न टाइम स्पष्ट होते हैं। ऐक्ट्रक्ट मेम्बर को डिक्लेअर करने के लिए हम MustOverride कीवर्ड का उपयोग करते हैं। ऐब्स्ट्रैक्ट सदस्य क्लास के अंदर ही डिक्लेअर किए जाने चाहिए।

2- ऐब्स्ट्रैक्ट क्लास को लागू करना (Implementing An Abstract Class) – जब कोई किसी ऐक्ट क्लास को इनहेरिट करता है तो यह आवश्यक होता है कि यह ऐब्स्ट्रैक्ट क्लास के द्वारा परिभाषित प्रत्येक ऐब्स्ट्रैक्ट मेम्बर को भी लागू (implement) करें। यह इप्लीमेनटेशन ऐब्स्ट्रैक्ट क्लास में स्पष्ट सदस्य को ओवरराइड करके संभव होता है।

आओ सीखें- एक कंसोल एप्लिकेशन लिखे जो ऐब्स्ट्रैक्ट क्लास के डिक्लेअरेशन तथा इम्प्लीमेनटेशन को दर्शाता है।

समाधान :

  1. File मैन्यू को क्लिक करें तथा New Project का चयन करें ।
  2. New Project डायलॉग बॉक्स खुलने के पश्चात Templates पेन में Console Application को क्लिक करें।
  3. Name टेक्स्टबॉक्स में My Project टाइप करें तथा OK को क्लिक करें । उसके बाद कोड डिजायनर विण्डो खुलेगा।
  4. निम्नलिखित कोड टाइप करें-

Module Module 1
Public MustInherit Class AbstractClass
‘declaring an abstract class with MustInherit keyword
Public MustOverride Function Add() As Integer
Public MustOverride Function Mul() As Integer
‘declaring two abstract members with MustOverride keyword
End Class

Public Class AbstractOne
Inherits AbstractClass
‘implementing the abstract class by inheriting
Dimi As Integer = 20
Dim j As Integer = 30
‘declaring two integers

Public Overrides Function Add() As Integer
Return i + j
End Function
implementing the add method

Public Overrides Function Mul() As Integer
Return i * j 

End Function
‘implementing the mul method

End Class

Sub Main()
Dim abs As New AbstractOne()
‘creating an instance of AbstractOne
Console. WriteLine (“Sum is” & ” ” & abs.Add())
Console. WriteLine(“Multiplication is” & ” ” & abs. Mul())
‘displaying output
Console. Read ()
End Sub

End Module

F5 से प्रोग्राम को रन कराएँ तथा परिणाम देखें। उपरोक्त प्रोग्राम में दूसरे लाइन पर MustInherit कीवर्ड की सहायता से AbstractClass नाम से एक ऐब्स्ट्रैक्ट क्लास बना है। तथा तीसरे और चौथे लाइन इस ऐब्स्ट्रैक्ट क्लास के दो मेम्बर फंक्शन Add() तथा Mul() को MustOverride कीवर्ड का उपयोग करके बनाया गया है।

उसके बाद छःवां लाइन में AbstractOne AbstractClass को इंहेरिट कर रहा है। तथा इसे Overrides की वर्ड का उपयोग से add मेथड को दसवां लाइन में इम्प्लीमेण्ट किया जा रहा है। इस प्रकार mul मेथड को भी इम्प्लीमेण्ट किया गया है।

अंत में Sub main() के अंदर AbstractOne() क्लास का एक ऑब्जेक्ट abs नाम से बना है जो दोनों फंक्शन का आउटपुट के लिए करता है। तो आप समझ गये होंगे कि एब्स्ट्रैक्ट क्लास का अपना कोई ऑब्जेक्ट नहीं होता है। तथा एब्स्ट्रैक्ट क्लास के एब्स्ट्रैक्ट मेम्बर भी हो सकते हैं।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है इसकी विभिन्न विशेषताएं | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा वी. बी. डॉट नेट | What Is Object-Oriented Programming Language Examples

ऑब्जेक्ट ओरिएंटेड लैंग्वेज क्या है? | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है एवं उपयोग | Object Oriented Programming Language In Hindi
ऑब्जेक्ट ओरिएंटेड लैंग्वेज क्या है? | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है एवं उपयोग | Object Oriented Programming Language In Hindi

माईबेस कीवर्ड (MyBase Keyword)

My Base कीवर्ड का उपयोग क्लास के वर्तमान ऑब्जेक्ट के immediate आधार क्लास को इंगित करने के लिए होता है। उदाहरण के लिए यदि Class2 Class1 से इन्हेरिट होता है तो class1 class2 का आधार क्लास कहा जाता है तथा class2 class1 का व्युत्पन्न क्लास कहलाता है। Class1 का रेफरेंस class2 के कोड में MyBase कीवर्ड की सहायता से दिया जाता है। MyBase कीवर्ड का उपयोग आधार क्लास के उन सदस्यों को एक्सेस करने में होता है जो व्युत्पन्न क्लास में ओवरराइड या शैडो (shadow) किये जाते हैं। MyBase कीवर्ड का उपयोग किये जाने की कुछ सीमाएँ हैं-

  1. इसका उपयोग आधार क्लास के प्राइवेट सदस्यों को एक्सेस करने में नहीं किया जा सकता है।
  2. इसका उपयोग MustOverride आधार मेथड को कॉल करने में नहीं किया जा सकता है।
  3. इसे किसी वेरियेबल को असाइन नहीं किया जा सकता है।
  4. इसे किसी प्रोसीजर को पास नहीं किया जा सकता है।
  5. यदि आधार क्लास से अलग किसी असेम्बली में व्युत्पन्न क्लास को परिभाषित किया जाता है तो My Base कीवर्ड का उपयोग Friend चिन्हित आधार क्लास के सदस्यों को एक्सेस करने में नहीं किया जा सकता है।
  6. इसका उपयोग लॉजीकल क्रिया के लिये 1s ऑपरेटर के साथ नहीं किया जा सकता है।
  7. इसका उपयोग स्वयं को क्वालीफाई करने में नहीं किया जा सकता है। उदाहरण के लिए MyBase.MyBase.Button1_Click() स्टेटमेण्ट अमान्य है।

आओ सीखें- एक कंसोल प्रोग्राम लिखें जो MyBase की-वर्ड के कार्यान्वयन को समझाएँ।

समाधान :

  1. File मेन्यू को क्लिक करें तथा New Project का चयन करें ।
  2. New Project डायलॉग बॉक्स खुलने के पश्चात Templates पेन में Console Application को क्लिक करें।
  3. Name टेक्स्टबॉक्स में My Project टाइप करें तथा OK को क्लिक करें । उसके बाद कोड डिजायनर विण्डो खुलेगा।
  4. निम्नलिखित कोड टाइप करें-

Module Tester

Sub Main()
Dim circle As Circle

circle = New Circle(37, 43, 2.5) ‘ instantiate Circle
Console.WriteLine(“X coordinate is” & circle.X & vbCrLf & _
“Y coordinate is” & circle.Y & vbCrLf & “Radius is” & _
circle.Radius)

circle.X = 2
circle.Y = 2
circle.Radius = 4.25

Console. WriteLine (“The new location and radius of circle are ” &_
vbCrLf & circle.ToString()) 

Console.WriteLine(“Diameter is” &_
String.Format(“{0:F)”, circle.Diameter()))

Console.WriteLine(“Circumference is” &_
String.Format(“{0:F)”, circle.Circumference()))

Console.WriteLine(“Area is ” & String.Format(“(0:F)”, circle.Area()))
Console.ReadLine()

End Sub

End Module

Public Class Circle
Inherits Point

Private mRadius As Double

Public Sub New()
Radius=0
End Sub’ New

Public Sub New(ByVal xValue As Integer,
ByVal y Value As Integer, ByVal radius Value As Double)
MyBase.New(xValue, y Value)
Radius = radius Value
End Sub New

Public Property Radius() As Double
Get
Return mRadius
End Get

Set(ByVal radius Value As Double)

If radius Value > 0 Then
mRadius = radius Value
End If

End Set

End Property’ Radius

Public Function Diameter() As Double
Return mRadius *2
End Function’ Diameter
Public Function Circumference() As Double
Return Math.PI Diameter
End Function Circumference 

Public Overridable Function Area() As Double
Return Math.PI* mRadius ^2
End Function ‘ Area

Public Overrides Function ToString() As String
Return “Center =” & MyBase.ToString() &
“: Radius= & mRadius
End Function’ ToString

End Class

Public Class Point
Private mX, mY As Integer
Public Sub New()
X=0
Y=0
End Sub New

Public Sub New(ByVal x Value As Integer,___
ByVal y Value As Integer)
X=xValue
Y = y Value
End Sub New

Public Property X() As Integer
Get
Return mX
End Get

Set(ByVal value As Integer)
mX = value
End Set

End Property ‘ X

Public Property Y() As Integer
Get
Return mY
End Get

Set(ByVal value As Integer)
mY = value
End Set

End Property ‘ Y

Public Overrides Function ToString() As String
Return “[” & mX & “, ” & mY & “]”
End Function’ ToString

End Class  F5 की दबाकर प्रोग्राम को रन करें परिणाम प्रकट होगा। उपरोक्त कोडिंग में कई स्थान पर MyBase की वर्ड का उपयोग हुआ है। आप इसकी उपयोगिता को इस प्रोग्राम के माध्यम से समझ सकते हैं।

माईक्लास कीवर्ड (MyClass Keyword)

MyClass को समझने के लिए इस कोड को पहले देखें-
Class Parent
Public Overridable Sub p1()
Console.Write(“Parent.p1”)
End Sub
Public Sub p2()

MyClass.p1()

यहाँ MyClass कीवर्ड को उपयोग कर यह बताया जा रहा है कि सभी व्युत्पन्न क्लास आधार/एक्स्ट्रैक्ट क्लास को इंगित
करता है जहाँ जहाँ MyClass प्रकट है।

End Sub
End Class

Class Child
Inherits Parent
Public Overrides Sub p10)
Console.Write(“Child.p1”)
MyBase.p2()
End Sub
End Class

Sub Main()
Dim p As Parent
Dim e As Child
p= New Parent()
ppl) ‘OK
p.p20 OK
p New Child()
p.p1()’stack overflow error is prevented

यदि MyClass को उपरोक्त आधार क्लास में लागू नहीं किया गया तो आपको स्टेक ओवरफ्लो त्रुटि प्रदर्शित होगा। स्टैक ओवरफ्लो त्रुटि यहाँ क्यों प्रकट होता है ?

Parent.p2() Parent.pl () को कॉल करता है।
Parent.pl() पॉलिमोफिक है क्योंकि इसे ओवरराइड किया जा सकता है।
Child.p1() Parent.pl () को ओवरराइड करता है इसलिए Parent.pt() को कोई भी कॉल वस्तुत: Child.pl को कॉल करता है यदि आपके पास चाइल्ड क्लास का कोई इन्स्टैन्स है।
Child.p1 My Base.p2 को कॉल करता है।
MyBase.p2 वस्तुत: Parent.p2 है।

अब यदि आप अब तक मेरे साथ है तो त्रुटि तब आती है जब आपके पास चाइल्ड क्लास का इन्स्टैन्स है तथा आप p1 और p2 प्रोसीजर को कॉल करते हैं। pl को कॉल करने पर निम्नलिखित एक्जिक्यूशन ओवरफ्लो (execution overflow) को जन्म देता है-

Child.p1 -> Parent.p2 -> Child.p1 -> Parent.p2 -> Child.p1 > इत्यादि
तथा ये चक्र (cycle) तब तक दोहराता है जब तक कि हमारे पास कोई स्टैक स्पेस नहीं बचता है। p2 प्रोसीजर को कॉल करने पर निम्नलिखित एक्जिक्यूशन फ्लो प्रकट होता है-

Child.p2-> Child.p1 -> Parent. p2 -> Child p1-> Parent.p2-> Child.p1 -> इत्यादि
MyClass कीवर्ड को आधार क्लास में लागू करने पर यह बताता है कि सभी व्युत्पन्न क्लास आधार क्लास के मेथड का ही उपयोग करेंगे तथा इस तरह स्टैक ओवरफ्लो त्रुटि को रोका जा सकता है। देखें निम्नलिखित कोड को-
p.p2() ‘स्टैक ओवरफ्लो त्रुटि रोका गया
c = New Child()
c.p1() ‘स्टैक ओवरफ्लो त्रुटि रोका गया
c.p2) ‘स्टैक ओवरफ्लो त्रुटि रोका गया
End Sub

मॉड्यूल (Module)

विजुअल बेसिक तथा विजुअल बेसिक डॉट नेट में मॉड्यूल की अवधारणा बिल्कुल अलग है। विजुअल बेसिक डॉट नेट चूँकि एक संपूर्ण ऑब्जेक्ट ओरिएण्टेड प्रोग्रामिंग भाषा है अतः इसमें मॉड्यूल का उपयोग प्रोग्रामरों द्वारा बहुत कम किया जाता है। विजुअल बेसिक 6.0 तक के संस्करणों में मॉड्यूल एक फाइल के रूप में कार्य करता था जो समान उद्देशीय कोम को रखता है। 

मॉड्यूल विजुअल बेसिक डॉट नेट में रेफ्रेन्स टाइप (reference type) को परिभाषित करता है जो पूरे नेमस्पेस (namespace) में उपलब्ध होता है। मॉड्यूल (या स्टैण्डर्ड मॉड्यूल) क्लास की तरह ही होता है परन्तु इसमें कुछ महत्वपूर्ण फर्क है।

प्रत्येक  मॉड्यूल का बिल्कुल एक इनस्टैन्स (instance) होता है तथा इसे बनाने की या वेरियेबल असाइन करने की आवश्यकता नहीं होती है। मॉड्यूल्स इनहेरिटेन्स को सपोर्ट नहीं करता है। मॉड्यूलस इनटरफेस को भी लागू नहीं करता है। यह ध्यान दें कि मॉड्यूल क्लास अथवा स्ट्रक्चर की तरह नहीं होते हैं। आप प्रोग्रामिंग एलिमेण्ट को घोषित करके मॉड्यूल का डाटा टाइप नहीं रख सकते हैं।

इनस्टैन्स क्या है ?
इनस्टैन्स सामान्यतः किसी चल रहे प्रोसेस विशेषकर जैसाकि क्लास के इनस्टैन्स में किसी ऑब्जेक्ट को इंगित करता
है। नये ऑब्जेक्ट (या क्लास के इन्स्टैनस) को बनाने की प्रक्रिया इन्स्टैनसिएशन (instantiation) कहा जाता है।

आप मॉड्यूल का उपयोग केवल नेमस्पेस स्तर पर कर सकते हैं। इसका अर्थ यह है कि मॉड्यूल के लिए डिक्लेअरेशन संदर्भ सोर्स फाइल या नेमस्पेस होना चाहिए तथा यह कोई क्लास, स्ट्रक्चर, मॉड्यूल, इंटरफेस, प्रॉसीजर या ब्लॉक नहीं हो सकता। आप मॉड्यूल के अंदर मॉड्यूल नहीं रख सकते हैं।
मॉड्यूल आपके प्रोग्राम के समान लाइफटाइम रखते हैं क्योंकि इनके मेम्बर शेअर्ड होते हैं। इनके भी लाइफटाइम प्रोग्राम के समान होते हैं।
मॉड्यूलस का डिफॉल्ट एक्सेस फ्रेण्ड होता है। परन्तु आप उनके एक्सेस स्तर को एक्सेस मॉडिफायर की सहायता से एडजस्ट कर सकते हैं।
मॉड्यूल के सभी सदस्य पूर्णतः शेअर्ड होते हैं।

मॉड्यूल को लिखने का यह प्रारूप है-
[<attributelist>] [accessmodifier] Module modulename
[statements]
End Module

जहाँ attributelist तथा accessmodifier ऐच्छिक हैं। accessmodifier public या friend हो सकता है। name मॉड्यूल का नाम है तथा यह अनिवार्य अवयव है। Statements वे हैं जो इस मॉड्यूल के वेरियेबल, प्रॉपर्टी, इवेण्ट, प्रॉसीजर तथा नेस्टेड टाइप्स को परिभाषित करते हैं। End Module मॉड्यूल परिभाषा को समाप्त करता है।

उदाहरण के लिए इस कोड को देखें-
Public Module Module 1
Sub Main()
Dim UserName As String = InputBox (“What is your name ?”)
MsgBox(“User name is” & UserName)
End Sub
‘ Insert variable, property, procedure and event procedures
End Module

1- शेअर्ड मेम्बर्स (Shared Members) – शेअर्ड सदस्य प्रॉपर्टी, प्रॉसीजर तथा फील्ड होते हैं जो क्लास अथवा स्ट्रक्चर के सभी इंस्टैन्स के द्वारा शेअर किये जाते हैं। कुछ प्रोग्रामिंग भाषाओं के द्वारा ऐसे आइटमों को स्टैटिक सदस्य कहते हैं।

शेअर्ड फील्ड तथा प्रॉपर्टी तब उपयोगी होते हैं जब आप के पास ऐसा सूचना होता है जो क्लास का हिस्सा होता है। परन्तु क्लास के किसी एक इन्स्टैन्स के लिए विशेष नहीं होता है। जब आप किसी शेअर्ड फील्ड तथा प्रॉपर्टी को बदलते हैं तब आप उस क्लास तथा क्लास के सभी इनस्टैनसेज से संबद्ध मान को बदलते हैं। दूसरी ओर, किसी इनस्टैन्स से संबंधित नॉन शेअर्ड फील्ड अथवा प्रॉपर्टी के मान के बदलने पर क्लास के अन्य इनस्टैनसेज में उस फील्ड या प्रॉपर्टी के मान को प्रभावित नहीं करता है।

इस प्रकार शेअर्ड फील्ड तथा प्रॉपर्टी ग्लोबल वेरियेबल की तरह आचरण करता है जो केवल क्लास के इनस्टैनसेज से अथवा क्लास नाम के क्वालिफिकेशन के साथ एक्सेस किया जा सकता है। शेअर्ड फील्ड तथा प्रॉपर्टीज के बगैर आपको इस परिणाम को प्राप्त करने के लिए मॉड्यूल स्तर वेरियेबलों को उपयोग करने की आवश्यकता पड़ती है। किन्तु मॉडयूल स्तर वेरियेबल आपके क्लास को समझना तथा मेनटेन करना कठिन बनाता है। तथा मॉड्यूल स्तर वेरियेबल को इस तरह उपयोग करने से एनकैप्सूलेशन की अवधारणा की अवहेलना करते हैं जिन्हें क्लास व्यक्त करता है।

शेअर्ड प्रॉसीजर क्लास के मेथड होते हैं जो क्लास के किसी विशेष इनस्टैन्स से संबद्ध नहीं होते हैं। उदाहरण के लिए Mathक्लास में परिभाषित Cos मेथड शेअर्ड मेथड होता है। आप ऑब्जेक्ट के मेथड के रूप में अथवा क्लास से सीधे-सीधे शेअर्ड प्रॉसीजर को कॉल कर सकते हैं। शेअर्ड प्रॉसीजर तथा प्रॉपर्टी को क्लास के इनस्टैनसेज का एक्सेस प्राप्त नहीं होता है। इसी कारण से शेअर्ड मेथड में नॉन शेअर्ड डाटा सदस्यों के केवल क्लालिफाइड रेफ्रेन्स ही शेअर्ड मेथड में अनुमति दिये जाते हैं।

नोट : यह अनुशंसित है कि आप वैसे कोड न लिखें जिसमें आप क्लास के इंस्टैन्स के माध्यम से शेअर्ड मेम्बर को एक्सेस करते हैं। ऐसा इसलिए कि कम्पाइलर शेअर्ड मेम्बर के क्वालिफिकेशन को मान्यता नहीं देते हैं तथा इसे इस तरह समझते हैं जैसेकि इन्हें क्लास के माध्यम से सीधे एक्सेस किये गये हों।

कुछ परिस्थितियों में, आप कोड को रन करने के लिए क्वालिफायिंग ऑब्जेक्ट के लिए इच्छा कर सकते हैं तथा इसीलिए विजुअल बेसिक कम्पाइलर क्लास के इन्स्टैन्स के माध्यम से शेअर्ड मेम्बर को एक्सेस करने के लिए चेतावनी जनित करता है। इंटेलिसेंस क्लास के इनस्टैन्स के लिए शेअर्ड मेम्बरों को डिस्प्ले नहीं करता है।

निम्नलिखित कोड एक शेअर्ड फील्ड, दो इन्स्टेनस फील्ड तथा एक शेअर्ड मेथड बनाकर यह दिखाता है कि शेअर्ड सदस्य किस प्रकार कोड में ऑपरेट करते हैं-

Public Class Item
Public Shared Count As Integer = 1
Public Shared Sub ShareMethod())
MsgBox(“Current value of Count: ” & Count)
End Sub
Public Sub New(ByVal Name As String)
‘Use Count to initialize SerialNumber.
Me.SerialNumber = Count
Me.Name = Name
‘Increment the shared variable
Count += 1
End Sub
Public SerialNumber As Integer
Public Name As String
Public Sub InstanceMethod()
MsgBox(“Information in the first object: ” &.
Me.SerialNumber & vbTab & Me. Name)


End Sub
End Class

Sub TestShared
‘Create two instances of the class.
Dim part1 As New Item (“keyboard”)
Dim part2 As New Item (“monitor”)

part1.InstanceMethod)
part2.InstanceMethod()
Item.ShareMethod()
End Sub

जब आप TestShared प्रॉसीजर को एक्जिक्यूट करते हैं तब क्लास में दो इनस्टैन्स बनते हैं। कंस्ट्रक्टर शेअर्ड फील्ड Count का उपयोग कर SerialNumber इनस्टैन्स फील्ड को इनिशिअलाइज करता है तथा Count को बढ़ाता है। यह तकनीक प्रत्येक इनस्टैन्स को स्वतः एक अलग क्रमांक संख्या देता है। दो इनस्टैन्स के बनने के बाद InstanceMethod नामक इन्स्टैन्स मेथड दोनों ऑब्जेक्ट पर कॉल किया जाता है तथा SharedMethod नामक शेअर्ड मेथड भी कॉल होता है।

इसका परिणाम यह होगा-
Information in the first object: 1 keyboard
Information in the second object : 2 monitor
Current value of the shared count field: 3

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-2 | Object Oriented Programming – Best Info

0
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-2 | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की विशेषताएं | Object Oriented Programming In Hindi
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-2 | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की विशेषताएं | Object Oriented Programming In Hindi

Table of Contents

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-2 | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की विशेषताएं | Object Oriented Programming In Hindi

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट परिचय (Introduction)वी०वी० डॉट नेट के बारे में यह कहा जाता है कि यह सम्पूर्ण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा है। ऐसा दावा शत प्रतिशत प्रदत्त प्रोग्रामिंग के सभी कसौटी पर वी. बी. डॉट नेट खड़ा उतरता है। इस अध्याय में हम आपको इसके ऑब्जेक्ट ओरिएंटेड सही है। वी. बी. डॉट नेट में वह सारी चीजें हैं, जो एक ऑब्जेक्ट ओरिएंटेड भाषा में होनी चाहिए। बल्कि मैं यह कहूँ कि ऑब्जेक्ट प्रोग्रामिंग भाषा होने से संबंधित बातें बताने जा रहा हूँ।

इस पार्ट-2 में हम जानेगे :- पॉलिमॉर्फिज्म तथा ओवरलोडिंग (Polymorphism and Overloading), पॉलिमॉर्फिज्म तथा ओवरराइडिंग (Polymorphism and Overriding), एक्सेस स्पेसिफायर (Access Specifiers), प्रॉपर्टी (Properties)

पॉलिमॉर्फिज्म तथा ओवरलोडिंग (Polymorphism and Overloading)

ओवरलोडिंग वी. बी. डॉट नेट का एक बहुत ही बढ़िया फीचर है जिसकी वी. बी. 6.0 में कमी थी। इसकी सहायता से आप एक ही मेथड के कई संस्करण बना सकते हैं। मेथड के नाम तो एक ही होते हैं परन्तु उसके आर्ग्यूमेण्ट सूची (argument list) अलग अलग होते हैं।

प्रत्येक मेथड का एक पहचान होता है जिसका उपयोग कम्पाइलर आंतरिक रूप से करता है। मेथड के आर्ग्यूमेण्ट्स को बदलने पर इसका पहचान भी बदल जाता है। इसके कारण वी. बी. डॉट नेट की सहायता से आप मेथड को ओवरलोड कर सकते हैं। इसका अर्थ यह है कि आप मेथड के विभिन्न संस्करण रख सकते हैं तथा सभी के नाम एक ही होंगे। अर्थात् जब आप मेथड को आवरलोड करते हैं तब मेथड की वास्तविक पहचान उसकी आर्ग्यूमेण्ट लिस्ट होती है। ओवरलोडिंग बिल्कुल आसान है।

1- ओवरलोडेड मेथड बनाना (Creating An Overloaded Method) – आप वी. बी. डॉट नेट में ओवरलोडेड मेथड को दो तरीके से बना सकते हैं। 

पहला एक ही क्लास के अंदर दो या अधिक मेथड बनाएँ जिसके अलग अलग आर्ग्युमेण्ट लिस्ट होंगे। उदाहरण के लिए-
Public Function GetPersonInfo(ByVal v sFirstName As String)
End Function
Public Function GetPersonInfo(ByVal v_1Personld As Long)
End Funciton

दूसरा Overloads की-वर्ड का उपयोग करके ओवरलोडेड मेथड बना सकते हैं। उदाहरण के लिए-
Public Overloads Function GetPersonInfo(ByVal v sFirstName As string)
End Function
Public Overloads Function GetPersonInfo(ByVal v_1Personld As Long)
End Function

उपरोक्त कोड में Overloads की-वर्ड वैकल्पिक होता है। यदि आप इसे उपयोग करते हैं तो आपको इसके नियम का अनुसरण करना होगा। फंक्शन ओवरलोडिंग के कई नियम हैं जिनका पालन वी. बी. प्रोग्रामर द्वारा किया जाना आवश्यक है।

2- ओवरलोडिंग के नियम (Rules For Overloading) – ओवरलोडिंग के कई नियम है जिनका पालन वी. बी. प्रोग्रामर द्वारा किया जाना अच्छा समझा जाता है। ये नियम इस प्रकार

  • आर्ग्यूमेण्ट सूची अलग होना चाहिए (Arguments List Must be Different) – ओवरलोडेड मेथड में आर्ग्युमेण्ट सूची अलग होना चाहिए। आप ऐसे दो मेथड नहीं रख सकते हैं जिसमें प्रत्येक का आर्ग्युमेण्ट समान डाटा टाइप का हो लेकिन आर्ग्युमेण्ट अलग नाम का हो। ऐसा करने पर कम्पाइलर यह त्रुटि संदेश देगा-
    Method [methodname] has multiple definitions with identical signatures
    यदि आर्ग्यमेण्ट्स समान है। जैसेकि इस प्रकार तब भी वी. बी. डॉट नेट एक ही क्लास के अंदर निम्नलिखित की अनुमति नहीं देगा-
    Public Overloads Function GetPersonInfo(ByVal v_sFirstName As String)

……………
End Function
Public Overloads Function GetPersonInfo(ByVal v_sLastName As String)

……………
End Function
किन्तु निम्नलिखित कोड स्वीकार्य होगा क्योंकि आर्ग्युमेण्ट सूची अलग है-
Public Overloads Function GetPersonInfo(ByVal v_sFirstName As String)
EndFunction
Public Overloads Function GetPerfonInfo (ByVal v_sLastName As String, ByVal v_sFirstName As String)
End Finction

  • आप ओवरलोडेड मेथड के मध्य केवल Optional आर्ग्युमेण्ट के साथ अंतर नहीं कर सकते हैं। ओवरलोडेड मेथड केवल एक Optional आर्ग्यूमेण्ट के द्वारा अलग नहीं हो सकता है। उदाहरण के लिए निम्नलिखित कोड मान्य नहीं है –

Public Overloads Function GetPersonInfo(ByVal v sFirstName As String)
……………

End Function
Public Overloads Function GetPersonInfo(ByVal v FirstName AsString…
                      Optional By Val v LastName As String = “”)
End Function

  • आप ओवरलोडेड पेड के मध्य केवल रिटर्न टाइपूस से अंतर नहीं कर सकते हैं। जैसे इस उदाहरण को देख
    Public Overloads Function GetPersonInfo(ByVal v FirstName As String) As String
    End Function
    Public Overloads Function GetPersonInfo(ByVal v sFirstName As String) As Data Dataset
    End Function
  • एक ही क्लास के अंदर एक ही मेथड के नाम के साथ सभी मेथडों में कीवर्ड जोड़ें। क्योंकि Overloads कीवर्स वैकल्पिक है आप यदि एक ही क्लास के एक मेथड नाम के साथ इस की वर्ड को जोड़ने के बाद सभी मेथड़ों में इसे जोड़ना आवश्यक होगा। उदाहरण के लिए यह देखें-
    Public Class Person
             Public Overloads Function GetPersonInfo (ByVal v_sFirstName As String)
              ……………

          End Function
          Public Overloads Function GetPersonInfo (By Val v_1PersonId As Long )
          ……………         

          End Function
End Class

किन्तु आप अलग क्लास में एक ही मेथड का नाम उपयोग कर सकते हैं तथा Overloads की-वर्ड को छोड़ सकते हैं। आपको ऐसा करने की अनुमति का कारण यह है कि अलग क्लास के मेथड की अलग पहचान (signature) होती है। यदि आप एक ही क्लास में एक ही मेथड नाम के साथ एक में Overloads की-वर्ड का उपयोग करते हैं दूसरे में छोड़ देते हैं कम्पाइलर यह त्रुटि देगा-

तथा Function (or sub) ( methodname] must be declared ‘Overloads’ because another [methodname] is de. clared ‘Overloads’.

3- ओवरलोडिंग के लाभ (Advantages of Overloading)
ओवरलोडिंग वी. बी. डॉट की और से वी. बी. प्रोग्रामर को एक बढ़िया सौगात है। स्पष्ट है इसके कई बड़े फायदे होंगे। आइए हम इसके निम्नलिखित लाभ जानते हैं-

  1. मेथड ओवरलोडिंग मेथड मैप को एक स्टैण्डर्ड इंटरफेस देता है। अगर कोई व्यक्ति मेथड को कॉल कर रहा होता है तो उसे इसकी स्पष्ट समझ होती है कि मेथड क्या करेगा तथा इसके लिए कौन से आर्ग्यूमेण्ट्स आवश्यक होंगे।
  2. ओवरलोडेड मेथड अन्य भाषाओं (यथा सी शार्प, सी++ तथा जावा) के साथ बेहतर कार्य करते हैं जो मेथड को कॉल करने के लिए वैकल्पिक (optional) पैरामीटर का उपयोग नहीं करते हैं।
  3. कोड स्पष्ट होता है। आपको अब अपने कोड को उलझाकर यह समझने की आवश्यकता नहीं कि आर्ग्यूमेण्ट के आधार पर किस लॉजिक का उपयोग करें।
  4. कम्पाइलर कम्पाइल समय में अमान्य आर्ग्युमेण्ट को पहचान लेगा जो रनटाइम में आर्ग्यूमेण्ट से संबंधित त्रुटियों को कम करने में सहायक होता है। 

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है इसकी विभिन्न विशेषताएं | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट | Object Oriented Programming System क्या होता है? | What Is Object-Oriented Programming Hindi?

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-2 | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की विशेषताएं | Object Oriented Programming In Hindi
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-2 | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की विशेषताएं | Object Oriented Programming In Hindi

पॉलिमॉफिज्म तथा ओवरराइडिंग (Polymorphism and Overriding)

किसी क्लास के प्रॉपर्टी, मेथड तथा टेक्स्ट का सेट क्लास इंटरफेस कहा जाता है। सारांशत: क्लास का इंटरफेस यह परिभाषित करता है कि इसे किस प्रकार आचरण करना चाहिए। Simple तथा Scientific क्लास का इंटरफेस जो उपयोग किया गया है।

 SimpleScientific
प्रॉपर्टीFirstNumberArstNumber
 SecondNumberSecondNumber
मेथडAddAdd
 SubtractSubtract
 MultiplyMultiply
 DivideDivide
इवेण्टकोई नहींकोई नहीं


Student तथा PFstudent दोनों के एक ही इंटरफेस हैं यद्यपि वे सेमेस्टर ग्रेड को अलग ढंग से सम्पन्न करते हैं। देखें तालिका

 StudentPFstudent
प्रॉपर्टीStudentIdentity DeviceStudentIdentity Device
 NameName
 FundamentalsFundamentals
 OfficeOffice
 CC
 SADSAD
मेथडGradeGrade
इवेण्टकोई नहींकोई नहीं

यदि प्रोग्रामर ऐसा प्रोग्राम लिखना चाहे जो इन दो क्लासों से ऑब्जेक्ट को मनिप्यूलेट करे तो उसे केवल यह जानना पड़ेगा कि इंटरफेस को उपयोग कैसे करें। प्रोग्रामर को यह जानने की आवश्यकता नहीं कि उस इंटरफेस का कौन सा विशेष कार्यान्वयन (iplementtation) उपयोग हो रहा है। (उदाहरण के लिए चौमिन खाने के लिए आप को केवल काँट को कैसे उपयोग करना है यह जानना आना चाहिए यह जानने की आवश्यकता नहीं कि चौमिन बना कैसे है।) ऑब्जेक्ट उसके बाद उस विशेष कार्यान्वयन के अनुसार ही कार्य करेगा।

प्रोग्रामर को केवल Grade मेथड की आवश्यकता होगी तथा इसके कार्यान्वयन के बारे में चिंतित होने की आवश्यकता नहीं होनी चाहिए। जैसा कि पहले भी जान चुके हैं कि वह फीचर जो क्लास में ऐसे मेथड रख सकते हैं जिनके नाम समान हों तथा उद्देश्य एक ही परन्तु उनके कार्यान्वयन अलग-अलग होते हैं पोलिमोर्फिजम कहा जाता है।

प्रोग्रामर पॉलिमोर्फिज़म को तीन अलग-अलग पदों में लागू कर सकते हैं। पहला प्रॉपर्टी, मेथड तथा इवेण्ट जो इंटरफेस बनाते हैं को परिभाषित करके। दूसरा पेरेण्ट क्लास का निर्माण करके जो इंटरफेस के द्वारा बताए गए फंक्शनलिटि को सम्पन्न कर दे।

ऑतिम चाइल्ड क्लास पेरेण्ट को इनहेरिट करे तथा उन मेथड  को ओवरराइड करे जो पेरेण्ट में अलग कार्यान्वयन चाहते हैं। Overridable की-वर्ड का प्रयोग उन पेरेण्ट मेथड को असाइन करने में होते हैं, जो ओवरराइड किए जाते हैं तथा Overrides की-वर्ड का उपयोग उन चाइल्ड मेथडों को असाइन करने में होता है, जो ओवरराइडिंग कर रहे हैं।

इस दौरान ऐसी परिस्थितियाँ आती हैं जहाँ चाइल्ड क्लास को पेरेण्ट क्लास के मेथड कार्यान्वयन को एक करने की आवश्यकता पड़े जो चाइल्ड ओवरराइड कर रहा है। वी. बी. डॉट नेट इस फंक्शनलिटि को सपोर्ट करने के लिए MyBase की-वर्ड उपलब्ध कराता है।

पोलिमोर्फिज़म को कार्य में लगाने के लिए Overridable की-वर्ड को क्लास के Grade मेथड के डिक्लेअरेशन लाइन में डाला जाता है। इस प्रकार – Overridable Function Grade() As String
PFstudent क्लास अपने पेरेण्ट क्लास के सभी प्रॉपर्टी तथा मेथड को इनहेरिट करता है तथा Grade मेथड को ओवरराइड करता है। इसका कोड इस प्रकार होगा-
Class PFStudent
     Inherits Student
     Overrides Function Grade() As String
         If My Base. Grade = “F” Then
            Return “Fail”
Else

           Return “Pass”

End If

End Function End Class

एक्सेस स्पेसिफायर (Access Specifiers)

एक्सेस स्पेसिफायर किसी ऑब्जेक्ट तथा इसके सदस्यों की एक्सेसिबिलिटी के स्कोप का वर्णन करता है। हम एक्सेस स्पेसिफायर का उपयोग कर क्लास के मेम्बर ऑब्जेक्ट के स्कोप को नियंत्रित कर सकते हैं। हम एक्सेस स्पेसिफायर का उपयोग अपने एप्लिकेशन के डाटा को सुरक्षित रखने के उद्देश्य से करते हैं।

विजुअल बेसिक पाँच एक्सेस स्पेसिफायर यथा Public, Private, Protected, Friend तथा Protected Friend उपलब्ध कराता है।

1- पब्लिक (Public) – Public स्पेसिफायर डॉट नेट का सबसे सामान्य एक्सेस स्पेसिफायर है। इसे कहीं से भी एक्सेस किया जा सकता है। अर्थात् इसकी एक्सेसिबिलिटी (accessibility) पर कोई प्रतिबंध नहीं होता है। डिक्लेअरेशन स्टेटमेण्ट में Public कीवर्ड यह स्पष्ट करता है कि ये अवयव प्रोजेक्ट के अंदर कहीं से भी या अन्य प्रोजेक्ट से जो उन अवयव वाले प्रोजेक्ट का रेफ्रेन्स देता हो तथा प्रोजेक्ट में बने असेम्बली में कहीं से एक्सेसिबल होता है। उदाहरण के लिए यह कोड- Public Class पब्लिक डिक्लेअरेशन को दर्शाता है।

आप Public का उपयोग मॉड्यूल, इंटरफेस या नेमस्पेस स्तर पर कर सकते हैं। इसका अर्थ यह है कि आप किसी पब्लिक अवयव को सोर्स फाइल या नेमस्पेस स्तर पर घोषित कर सकते हैं या इसे इंटरफेस, मॉड्यूल, क्लास या स्ट्रक्चर के भीतर घोषित किया जा सकता है परन्तु इसे किसी प्रॉसीजर के अंदर घोषित नहीं किया जा सकता है। 

2- प्रोटेक्टेड (Protected) – Protected की-वर्ड डिक्लेअरेशन स्टेटमेण्ट में यह स्पष्ट करता है कि अवयव केवल उसी क्लास के अंदर या उस क्लास के व्युत्पन्न क्लास से ही केवल एक्सेसिबल होता है। यह कोड- Protected Class classForMyFamily Protected डिक्लेअरेशन को दिखाता है।

आप Protected का उपयोग केवल क्लास स्तर पर तथा उस क्लास के मेम्बर को डिक्लेअर करते समय कर सकते है। इसका अर्थ है कि आप क्लास में ही प्रोटेक्टेड अवयव को डिक्लेअर कर सकते हैं परन्तु इसे सोर्स फाइल या नेमस्पेस स्तर पर, इंटरफेस, मॉड्यूल, स्ट्रक्चर या प्रोसीजर के अंदर डिक्लेअर नहीं कर सकते हैं।

3 फ्रेण्ड (Friend) – Friend कीवर्ड का उपयोग डिक्लेअरेशन स्टेटमेण्ट में यह बताता है कि अवयव केवल समान असेम्बली के अंदर की
एक्सेसिबल है। इन्हें असेम्बली के बाहर से एक्सेस नहीं किया जा सकता है। यह कोड Friend StringForThisProject As String

Friend डिक्लेअरेशन को दिखाता है। आप Friend का उपयोग केवल मॉड्यूल, इंटरफेस या नेमस्पेस स्तर पर कर सकते हैं। इसका अर्थ है कि आप किसी फ्रेण्ड या किसी इंटरफेस, मॉड्यूल, क्लास या एलिमेण्ट को केवल सोर्स फाइल या नेमस्पेस स्तर पर डिक्लेअर कर सकते स्ट्रक्चर के अंदर डिक्लेअर कर सकते हैं। इसको प्रोसीजर के अंदर डिक्लेअर नहीं कर सकते हैं।

4- प्रॉटेक्टेड फ्रेण्ड (Protected Friend) – आप किसी डिक्लेअरेशन स्टेटमेण्ट में एक साथ Protected तथा Friend दोनों एक्सेस स्पेसिफायर का उपयोग कर सकते हैं। दोनों की-वर्ड का उपयोग यह बताता है कि ये अवयव या तो व्युत्पन्न क्लास से या फिर समान असेम्बली से एक्सेसिबल होते हैं। उदाहरण के लिए यह स्टेटमेण्ट- Protected Friend StringForProjectAndFamily As String प्रोटेक्टेड फ्रेण्ड के डिक्लेअरेशन को दर्शाता है।

आप Protected Friend का उपयोग क्लास स्तर पर कर सकते हैं या उस क्लास के सदस्य को डिक्लेअर करते समय कर सकते हैं। इसका अर्थ यह है कि आप प्रोटेक्टेड फ्रेण्ड अवयव को क्लास में डिक्लेअर कर सकते हैं परन्तु इसको सोर्स फाइल या नेमस्पेस स्तर पर, इंटरफेस, मॉड्यूल, स्ट्रक्चर या प्रोसीजर के अंदर डिक्लेअर नहीं किया जा सकता है।

5- प्राइवेट (Private)
डिक्लेअरेशन स्टेटमेण्ट में Private की-वर्ड स्पष्ट करता है कि अवयव केवल मॉड्यूल, क्लास या स्ट्रक्चर से एक्सेसिबल
हो। यह कोड Private डिक्लेअरेशन को दिखाता है- Private numberForMeOnly As Integer

आप Private का उपयोग केवल मॉड्यूल स्तर पर कर सकते हैं। इसका अर्थ यह है कि आप प्राइवेट अवयव को किसी मॉड्यूल, क्लास या स्ट्रक्चर के अंदर डिक्लेअर कर सकते हैं। इसे सोर्स फाइल या नेमस्पेस स्तर पर, इंटरफेस के अंदर या प्रोसीजर में डिक्लेअर नहीं किया जा सकता है।

मॉड्यूल स्तर पर Dim. स्टेटमेण्ट बगैर एक्सेस स्पेसिफायर के Private डिक्लेअरेशन के समान होता है। किन्तु आप Private की-वर्ड का उपयोग कर अपने कोड को पढ़ना तथा इंटरप्रेट करना आसान बना सकते हैं। नोट : एक्सेस स्तर को स्पष्ट करने वाले की-वर्ड एक्सेस मॉडिफायर कहे जाते हैं। 

प्रॉपटी (Properties)

प्रॉपर्टी वी. बी. डॉट नेट कम्युनिटि में स्मार्ट फील्ड (smart fields) के नाम से जाने जाते हैं। हम जानते हैं कि डाटा एनकैप्सूलेशन वी. बी. डॉट नेट में प्रॉपर्टी कुछ नहीं केवल डाटा फील्ड्स का प्राकृतिक विस्तारण (natural extension) मात्र है। वे आमतौर डाटा एनकैप्सूलेशन क्लास अथवा स्ट्रक्चर के माध्यम से ही संभव हैं।

विभिन्न प्रकार के एक्सेस मॉडिफायर यथा प्राइवेट, तथा डाटा हाइडिंग (data hiding) ऑब्जेक्ट ओरिएण्टेड प्रोग्रामिंग भाषा के दो आधारभूत फीचर हैं। वी. बी. डॉट नेट में, पब्लिक, प्रोटेक्टेड इत्यादि का उपयोग कर क्लास सदस्यों की एक्सेसिबिलिटि को नियंत्रित करना संभव है।

आमतौर पर क्लास के अंदर हम डाटा फील्ड को प्राइवेट के रूप में डिक्लेअर करते हैं तथा पब्लिक SET तथा GET मेथड के एक सेट डाटा फील्ड को एक्सेस करने के लिए उपलब्ध कराता है। यह अच्छी प्रोग्रामिंग प्रचलन है चूँकि डाटा फील्ड क्लास के बाहर प्रत्यक्ष रूप से एक्सेसिबल नहीं होते हैं डाटा फील्ड को एक्सेस करने के लिए Set/get मेथड का उपयोग करना आवश्यक है। निम्नलिखित उदाहरण Set/get मेथड के उपयोग को दर्शाता है-

Imports System
Class [MyClass]
Private x As Integer
Public Sub SetX (By
Vali As Integer)
X = i
End Sub
Public Function GetX() As Integer
Return X
End Function
End Class [MyClass]
Class MyClient
Public Shared Sub Main()
Dim mc As New [MyClass]
mc.SetX (10)
Dim xVal As Integer = mc.GetX ()
Console. WriteLine (x Val) ‘ 10 डिस्प्ले करता है।
End Sub
End Class       ‘MyClient

परन्तु वी. बी. डॉट नेट प्रॉपर्टीज नाम का एक एक पूर्व-निर्मित मैकेनिजम (mechanism) उपरोक्त को करने के लिए उपलब्ध कराता है। वी. बी. डॉट नेट में प्रॉपर्टीज को प्रॉपर्टी डिक्लेअरेशन प्रारूप का उपयोग कर परिभाषित किया जाता है। प्रॉपर्टी को डिक्लेअर करने का एक सामान्य प्रारूप इस प्रकार है-
<access_modifier> <return_type> <property_name>
Get
End Get
Set
End Set


जहाँ <access_modifier> प्राइवेट, पब्लिक, प्रोटेक्टेड या इंटरनल हो सकता है।
return_type कोई भी मान्य वी. बी. डॉट नेट टाइप हो सकता है।
उपरोक्त प्रारूप का पहला भाग फील्ड डिक्लेअरेशन के समान दिखता है तथा दूसरा भाग get एक्सेस तथा Set एक्सेस पर बना हुआ है। 

उदाहरण के लिए उपरोक्त प्रोग्राम को प्रॉपर्टी x के साथ इस प्रकार संशोधित किया जा सकता है-
Class MyClass
Private X As Integer
Public Property X() As Integer
Get
Return X
End Get
Set (By Val Value As Integer)
X = Value
End Set
End Property
End Class MyClass

MyClass क्लास का ऑब्जेक्ट X प्रॉपर्टी को इस प्रकार एक्सेस कर सकता है-
Dim mc As New [MyClass]
mc.X = 10

X प्रॉपर्टी के Set एक्सेसर को कॉल करता है तथा स्टैण्डर्ड फील्ड का मान value को 10 पास करता है। इसका उपयोग डाटा सदस्य X के लिए मान सेट करने में होता है।
Console. WriteLine (mc.X)
10 को डिस्प्ले करता है तथा X प्रॉपर्टी के get एक्सेसर को कॉल करता है।

इसका संपूर्ण प्रोग्राम इस प्रकार होगा-
Imports System
Class MyClass
Private X As Integer
Public Property XO As Integer
Get
Return X
End Get
Set(ByVal Value As Integer)
X = Value
End Set
End Property
End Class ‘ [MyClass]
Class My Client
Public Shared Sub Main()
Dim mc As New MyClass()
mc.X = 10
Dim xVal As Integer = mc.X
Console. WriteLine (xVal)            * 10 को डिस्प्ले करता है।
End Sub
End Class

याद रखें कि प्रॉपर्टी में कम से कम एक एक्सेसर Set अथवा get होना चाहिए। Set एक्सेसर में इसमें उपलब्ध Value नामक एक मुक्त वेरियेबल होता है जो कम्पाइलर द्वारा स्वतः बन जाता है। हम Set एक्सेसर के अंदर value नाम के साथ किसी वेरियेबल को डिक्लेअर नहीं कर सकते हैं। 

1- स्टैटिक प्रॉपर्टी (Static Properties)

वी. बी. डॉट नेट स्टैटिक प्रॉपर्टी को सपोर्ट करता है जो क्लास के ऑब्जेक्ट से नही बल्कि क्लास से सम्बंधित होता है स्टैटिक मेम्बर पर लागू होने वाले सभी नियम स्टैटिक प्रॉपर्टी पर लागू होते हैं , निम्नलिखित प्रोग्राम क्लास के साथ स्टैटिक प्रॉपर्टी को दर्शाता है –

Imports System
Class MyClass
Private Shared X As Integer
Public Shared Property X() As Integer
Get
Return X
End Get
Set (ByVal Value As Integer)
X-Value
End Set
End Property
End Class
Class MyClient
Public Shared Sub Main()
MyClass.X = 10
Dim xVal As Integer = MyClass.X
Console.WriteLine(x Val) ‘ 10 को डिस्ले करता है।
End Sub ‘Main
End Class ‘MyClient

याद रखें कि स्टैटिक प्रॉपर्टी का Set/get एक्सेसर क्लास के केवल अन्य स्टैटिक सदस्यों को ही एक्सेस कर सकता है तथा स्टेटिक प्रॉपर्टी क्लास नाम का उपयोग कर इनवोक होते हैं।

2 प्रॉपर्टीज और इनहेरिटेन्स (Properties & Inheritance)
आधार (base) क्लास के प्रॉपर्टी को व्युत्पन्न क्लास में इनहेरिट किया जा सकता है। इसको समझने के लिए इस प्रोग्राम को देखें
Import System

Class base
Public Property X() As Integer
Get
Console.Write(“Base GET”)
Return 10
End Get
Set(ByVal Value As Integer)
Console.Write(“Base SET”)
End Set
End Property
End Class’ Base 

Class Derived
Inherits Base
End Class’ Derived
Class MyClient
Public Shared Sub Main()
Dim dl As New Derived
d1.X = 10
Console.WriteLine(d1.X)
End Sub
End Class

उपरोक्त प्रोग्राम बिल्कुल सीधा है। प्रॉपर्टी का इनहेरिटेन्स किसी अन्य सदस्य के इनहेरिटेन्स के समान है।

3- प्रॉपर्टीज और पोलिमोर्फिस्म (Properties and Polymorphism) – आधार क्लास का प्रॉपर्टी व्युत्पन्न क्लास में एक नाम के कई रूपों में (polymorphically) ओवरराइड किया जा सकता है। परन्तु यह याद रखें कि virtual, override इत्यादि जैसे मॉडिफायर केवल प्रॉपर्टी स्तर पर उपयोग हो रहे होते हैं। ये एक्सेसर स्तर पर उपयोग हो रहे होते हैं। इस प्रोग्राम को देखें-

Imports System
Class Base
Public Overridable Property X() As Integer
Get
Console.Write (“Base GET”)
Return 10
End Get
Set (ByVal Value As Integer)
Console.Write(“Base SET”)
End Set
End Property
End Class’ Base
Class Derived
Inherits Base
Public Overrides Property X() As Integer
Get
Console.Write (“Derived GET”)
Return 10
End Get
Set (ByVal Value As Integer)
Console.Write(“Derived SET”)
End Set
End Property
End Class’ Derived
Class MyClient
Public Shared Sub Main()
Dim b1 = New Derived
b1.X = 10
Console.WriteLine(b1.X)
End Sub
End Class ‘MyClient 

4- ऐब्स्ट्रैक्ट प्रॉपर्टीज (Abstract Properties) – क्लास के अंदर प्रॉपर्टी को Abstract की-वर्ड की सहायता से एब्स्ट्रैक्ट घोषित किया जा सकता है। याद रखें कि क्लास में एब्स्ट्रैक्ट प्रॉपर्टी में कोई कोड नहीं होता है। get/set एक्सेसर अर्द्धकॉलन (;) के साथ व्यक्त किया जाता है। व्युत्पन्न क्लास में Set तथा get एक्सेसर को लागू करना आवश्यक है। यदि ऐब्स्ट्रैक्ट क्लास में केवल सेट एक्सेसर होता है तो हम व्युत्पन्न क्लास में केवल Set को लागू कर सकते हैं। निम्नलिखित प्रोग्राम ऐन्स्ट्रैक्ट प्रॉपर्टी को दर्शाता है-

Imports System
MustInherit Class Abstract
Public MustOverride Property X() As Integer
Get
End Get
Set
End Set
End Property
End Class ‘Abstract
Class Concrete
Inherits Abstract
Public Overrides Property X() As Integer
Get
Console. Write (“GET”)
Return 10
End Get
Set (By Val Value As Integer)
Console. Write (“SET”)
End Set
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग | 283
End Property
End Class’ Concrete
Class MyClient
Public Shared Sub Main()
Dim C1 As New Concrete
C1.X = 10
Console. WriteLine (C1.X)
End Sub ‘Main
End Class ‘MyClient

वी. बी. डॉट नेट के अंदर प्रॉपर्टी भाषा स्तर पर जोड़े गये महत्वपूर्ण फीचर है। ये जी. यू. आई. प्रोग्रामिंग में बहुत उपयोगी है। याद रखें कि कम्पाइलर वस्तुतः उपयुक्त get तथा set मेथड को बनाता है जब वी. बी. डॉट नेट प्रॉपर्टी प्रारूप को पार्स (parse) कराता है।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-1 | Object Oriented Programming – Best Info

0
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-1 | ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है | Object Oriented Programming In Hindi
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-1 | ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है | Object Oriented Programming In Hindi

Table of Contents

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-1 | ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है | Object Oriented Programming In Hindi

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग परिचय (Introduction) – वी०वी० डॉट नेट के बारे में यह कहा जाता है कि यह सम्पूर्ण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा है। ऐसा दावा शत प्रतिशत प्रदत्त प्रोग्रामिंग के सभी कसौटी पर वी. बी. डॉट नेट खड़ा उतरता है। इस अध्याय में हम आपको इसके ऑब्जेक्ट ओरिएंटेड सही है। वी. बी. डॉट नेट में वह सारी चीजें हैं, जो एक ऑब्जेक्ट ओरिएंटेड भाषा में होनी चाहिए। बल्कि मैं यह कहूँ कि ऑब्जेक्ट प्रोग्रामिंग भाषा होने से संबंधित बातें बताने जा रहा हूँ।

इस पार्ट-1 में हम जानेगे :- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Object Oriented Programming), प्रॉसीजर प्रदत्त प्रोग्रामिंग बनाम ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Procedure Oriented Programming VS Object Oriented Programming), ऑब्जेक्ट (Object), क्लास (Class), ऐब्स्ट्रैक्शन (Abstraction), एनकैप्सुलेशन (Encapsulation), इनहेरिटेन्स (Inheritance), पॉलिमॉरफिजम (Polymorphism)

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Object Oriented Programming)

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग को समझाने से पहले मैं चाहता हूँ कि आपको प्रोसीजर प्रदत्त प्रोग्रामिंग के बारे में बताऊँ। हाँ वही प्रोसीजर प्रदत्त प्रोग्रामिंग जिस पर C भाषा आधारित है या Cभाषा जिस पैराडाइम (Paradigm) का अनुसरण करती है। इसकी बहुत सारी अच्छाइयाँ हैं परन्तु उसकी कई खराबियाँ भी हैं। सबसे पहले कि इस पैराडाइम में बना प्रोग्राम बड़ा होने पर जटिल हो जाता है। और दूसरा, यह वास्तविक दुनिया के ऑब्जेक्ट को प्रतिरूपित नहीं करता है। मैं समझता हूँ कि इसकी पहली कमी के ही कारण ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का जन्म हुआ।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की परिभाषा मैं बिल्कुल दो पंक्ति में दूंगा जिससे आपको यह पूरी तरह से स्पष्ट हो जाएगा। आप कभी किसी नर्सरी (nursery) में गये हैं जहाँ फूलों एवं फलों के पौधे एवं बीज बिकते हैं। जरूर गये होंगे। वहाँ पौधों की व्यवस्था देखी होगी। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ठीक उसी प्रकार डाटा को व्यवस्थित करता है। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में आप डाटा को उसी तरह व्यवस्थित करते हैं जिस प्रकार किसी नर्सरी में उस का प्रबंधक विभिन्न प्रकार के पौधों को सजाकर रखता है।

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

इस पैराडाइम (Paradigm) में प्रोग्राम निकायों (entities) में विभाजित होते हैं जिन्हें ऑब्जेक्ट कहते हैं। बाद में, डाटा और फंक्शन इन ऑब्जेक्ट को कैरेक्टराइज (characterise) करने के लिए डिजाइन किये जाते हैं। डाटा छिपे होते हैं तथा बाहरी फंक्शन के द्वारा शेयर नहीं किये जा सकते हैं। बनाये गये ऑब्जेक्ट फंक्शनों के माध्यम से इंटरएक्ट (Interact) कर सकते हैं। चूँकि ऊप्स (OOPS) में ऑब्जेक्ट पहले बनाये जाते हैं तथा उनके चारों तरफ डाटा और फंक्शन बाद में विकसित होते हैं इसलिए ऊप्स बॉटम-अप डिजाइन का अनुसरण करता है।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के फायदे | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा क्या है इसकी विभिन्न विशेषताएं बताइए | Object Oriented Programming In Hindi

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-1 | ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है | Object Oriented Programming In Hindi
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वी. बी. डॉट नेट पार्ट-1 | ऑब्जेक्ट ओरिएंडेड प्रोग्रामिंग क्या है | Object Oriented Programming In Hindi

प्रॉसीजर प्रदत्त प्रोग्रामिंग बनाम ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (Procedure Oriented Programming VS Object Oriented Programming)

जैसा कि मैंने बताया कि प्रॉसीजर प्रदत्त प्रोग्रामिंग में डाटा को वरीयता प्राप्त नहीं होती है जबकि ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में डाटा को प्राथमिकता प्राप्त होती है | परिणाम स्वरुप प्रॉसीजर प्रदत्त प्रोग्रामिंग में डाटा ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की अपेक्षाकृत कम सुरक्षित होता है। हम इन दोनों के बीच के अंतरों को सारणी में स्पष्ट करते हैं।

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

ऑब्जेक्ट (Object)

ऑब्जेक्ट वास्तविक दुनिया एन्टिटि (Entity) का ऐबस्ट्रैक्शन (abstraction) होता है। यह किसी व्यक्ति, किसी स्थान, कोई संख्या, कोई आइकन, कोई विण्डो, किसी ब्राउजर, किसी सूची, वेक्टर या ऐसी किसी चीज को जिसे प्रतिरूपित (model) किया जा सकता हो को इंगित करता है।
प्रत्येक डाटा एक ऑब्जेक्ट होता है। यहाँ तक कि प्रयोक्ता परिभाषित डाटा टाइप को भी ऑब्जेक्ट के रूप में व्यक्त किया
जा सकता है। ऑब्जेक्ट के कुछ फीचर इस प्रकार हैं :

  • ऑब्जेक्ट ऊप्स में केन्द्रीय निकाय (Entity) होते हैं।
  • ऑब्जेक्ट रन टाइम निकाय होते हैं।
  • ऑब्जेक्ट मेमोरी में स्थान घेरते हैं तथा उनका एक संबंधित पता होता है। 
  • सभी ऑब्जेक्ट एक दूसरे को संदेश भेजकर आपस में कम्यूनिकेट कर सकता है। उदाहरण- माउस से किसी आइकन पर क्लिक करना संदेश प्रेषण है तथा परिणामस्परूप आइकन के द्वारा विण्डो को खोलना तथा विकल्प मेन्यू प्रदान करना संदेश है।
  • ऑब्जेक्ट में डाय तथा ऑपरेशन दोनों होते हैं, जो इन डाटा को मनिप्यूलेट करता है।

ऑब्जेक्ट को अलग-अलग तरीके से निरूपित किया जा सकता है। लेकिन ऑब्जेक्ट को व्यक्त करने के लिए खास नोटेशन उपलब्ध हैं।

क्लास (Class)

क्लास समान फीचर वाले ऑब्जेकट का एक संकलन होता है। हम कह सकते हैं कि क्लास एक तरह के ऑब्जेक्ट का विवरण होता है, जो इतने समान होते हैं कि वे बिल्कुल समान तरीके से व्यवहार करते हैं। क्लास भाषा कंस्ट्रक्ट (construct) होता है जिसका सामान्य प्रयोग ऊप भाषाओं में ऐबस्ट्रक्ट डाटा टाइप्स (Abstract Data Types) को परिभाषित करने में होता है। ऐबस्ट्रैक्ट डाटा टाइप्स डाटा टाइप के साथ संबद्ध (associated) यूजर परिभाषित ऑपरेशन्स के इम्पलीमेन्टेशन (implementation) को छिपा कर प्रिमिटिव डाटा टाइप के नोटेशन को एक्स्टेंड करता है।

प्रोग्राम दृष्टिकोण से क्लास वह ब्लू प्रिंट होता है, जो ऑब्जेक्ट के बनावट (Construction of objects) का मार्गदर्शन करता है। उदाहरणस्वरूप नैनो कार का डिजाइन एक क्लास है। नैनो कार के डिजाइन में वे सभी विवरण मौजूद है जिसके अनुसार नैनो कार का निर्माण कारखाने में होगा।
क्लास यूजर परिभाषित डाटा टाइप होता है, जो डाटा को मनिप्यूलेट करने वाले डाटा सदस्यों तथा फंक्शनों को रखता है। क्लास के एक बार परिभाषित होने के बाद यह संभव होता है कि उस क्लास के लिए जितना ऑब्जेक्ट चाहे बना लें। प्रत्येक 

ऑब्जेक्ट को उस क्लास का इंस्टैन्स (instance) कहा जाता है। क्लास का प्रयोग निर्धारित (specified) इंटरफेसेज तथा इम्पलिमेंटेशन के साथ ऑब्जेक्ट निर्माण हेतु टेम्पलेट्स की तरह प्रयोग किया जा सकता है।
उदाहरण :
(i) डायलॉग बॉक्स तथा टेक्स्ट विण्डो, विण्डोज क्लास के सदस्य होते हैं।  (ii) लिलि, लोटस, तथा रोज फ्लावर क्लास के सदस्य हैं।
(iii) पर्सन तथा एलिफैंट मैमेलस क्लास के सदस्य हैं।
क्लास को परिभाषित करने का यह प्रारूप है-
Class ClassName
         statements
End class

आओ सीखें-1  एक विण्डोज प्रोग्राम बनाऐं। इसमें Student क्लास का उपयोग कर विद्यार्थी के परीक्षा का ग्रेड की गणना करें तथा उसे डिस्प्ले करें। इस प्रोग्राम का इंटरफेस की भाँति होगा। इंटरफेस में जोड़े जाने वाले ऑब्जेक्ट, उनके प्रॉपर्टी तथा मान इस प्रकार होंगे।

ऑब्जेक्टप्रॉपर्टीसेटिंग
फॉर्मNameForm1
 TextMy Project  
लेबलNameLabel1
 TextSID
टेक्स्टबॉक्सNametxtSID
 Textरिक्त
लेबलNameLabel2
 TextName
टेक्स्टबॉक्सNametxtName
 Textरिक्त
लेबलNameLabel3
 TextFundamentals
टेक्स्टबॉक्सNametxtFundamentals
 Textरिक्त
लेबलNameLabel4
 TextOffice
टेक्स्टबॉक्सNametxtOffice
 Textरिक्त
लेबलNameLabel5
 TextProgramming In C
टेक्स्टबॉक्सNametxtC
 Textरिक्त
लेबलNameLabel6
 TextSystems Analysis & Design
 UseMnemonicFalse 
टेक्स्टॉक्सNametxtSAD
 Textरिक्त
बटनNamebtnData
 TextEnter Data
बटनNamebtnDisplay
 TextDisplay Grade
बटनNamebtnQuit
 TextQuit
लिस्टबॉक्सName1stData

समाधान :

  1. File मेन्यू को क्लिक करें तथा New Project का चयन करें ।
  2. New Project डायलॉग बॉक्स खुलने के पश्चात Templates पेन में Windows Application को क्लिक करें।
  3. Name टेक्स्टबॉक्स में My Project  टाइप करें तथा OK को क्लिक करें । उसके बाद एक नया विण्डोज फॉर्मस प्रोजेक्ट खुलेगा ।
  4. फॉर्म पर प्रश्न में दिए गए विवरण के अनुसार टूलबॉक्स से कंट्रोल को जोड़ें। तथा प्रश्नानुसार उनके प्रॉपर्टी को सेट करें तथा उनहें सजाएँ ।
  5. फॉर्म पर कहीं भी दायाँ क्लिक करे तथा पॉप पप मेन्यू से View Code का चयन करें और निम्नलिखित कोड टाइप करें- 

Public Class Form1

Dim pupil As student
Private Sub btnData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnData.Click
pupil New student()
pupil.StudentIdentity Device = txtSID.Text
pupil.Name = txtName.Text
pupil.Fundamentals = CInt(txtFundamentals.Text)
pupil.Office = CInt(txtOffice.Text)
pupil.C= CInt(txtC.Text)
pupil.SAD= CInt(txtSAD.Text)

txtSID.Clear()
txtName.Clear()
txtFundamentals.Clear()
txtOffice.Clear()
txtC.Clear()
txtSAD.Clear()
IstData.Items.Clear()
1stData.Items.Add(” Students Recorded”)
End Sub

Private Sub btnDisplay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnDisplay. Click
Dim fmtStr As String = “{0,-20} {1,-15} {2, -4}”
1stData.Items.Clear()
1stData.Items.Clear()
1stData.Items.Add(String.Format(fmtStr, pupil.Name, pupil.StudentIdentity Device,
pupil.grade))

End Sub

Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnQuit.Click

End
End Sub

Class Student
Private m_name As String
Private m_sid As Integer
Private m_fundamentals As Integer
Private m_office As Integer 

Private m C As Integer
Private m SAD As Integer

Public Property Name() As String
Get
Return m_name

End Get
Set(ByVal value As String)
m_name = value
End Set
End Property

Public Property StudentIdentity Device() As String
Get
Return m_sid

End Get
Set(ByVal value As String)
m_sid = value
End Set
End Property
Public WriteOnly Property Fundamentals() As Integer

Set(ByVal value As Integer)
m_fundamentals = value
End Set
End Property
Public WriteOnly Property Office() As Integer

Set(ByVal value As Integer)
m_office = value
End Set
End Property
Public WriteOnly Property CO) As Integer

Set(ByVal value As Integer)
m_C= value
End Set
End Property

Public WriteOnly Property SAD() As Integer

Set(ByVal value As Integer)
m_SAD = value 

End Set

End Property

Function grade() As String
Dim marks As Double

marks = (m_fundamentals+m_office + m_C +m_SAD)
marks = Math.Round (marks)
Select Case marks
Case Is >= 180
Return “A”
Case Is >= 160
Return “B”
Case Is >= 140
Return “C”
Case Is >= 120
Return “D”
Case Is >= 100
Return “F”

End Select
End Function

End Class
End Class

F5 दबाकर रन प्रोग्राम को रन करायें तथा डाटा को प्रविष्ट करें और Enter Data बटन को क्लिक करें। इसके पश्चात् लिस्टबॉक्स में Students Recorded प्रकट होगा। अब उसके बाद Display Information बटन को क्लिक करें। तत्पश्चात् आपको परिणाम दिखेगा। याद रखिये विषय यथा फण्डामेण्टल्स इत्यादि टेक्स्टबॉक्स में 50 या उससे कम मान प्रविष्ट करें यह मानते हुए कि उस विषय का अधिकतम मान 50 है।

ऐब्सक्ट्रैक्शन (Abstraction)

ऐब्सन्ट्रेक्शन ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का एक आवश्यक अवयव है। इसे इस प्रकार परिभाषित किया जा सकता हूँ यह सिस्टम आवश्यकताओं (या विनिर्देशनों) से विवरण (details) या ब्योरे (explanations) को अलग करने का नाम है ताकि आवश्यकताओं को समझने की जटिलता कम हो सके। अर्थात् बैकग्राउण्ड ब्योरे को शामिल किये बगैर आवश्यक फीचरों को व्यक्त किया जा सके। डाय ऐन्ट्रैक्शन वस्तुतः डाटा एनकैप्सुलेशन का दूसरा मेनिफेस्टेशन (manifestation) है। एनकैप्सुलेटेड डाटा सामान्य से छिपे होते हैं, परन्तु एक ही क्लास के फंक्शनों को दृश्य (visible) होते हैं।

एनकैप्सुलेशन (Encapsulation)

एनकैप्सुलेशन वह विधि है, जो डाटा तथा फंक्शनों को एक साथ कैप्सूल या पैक में रखता है। इसका उद्देश्य उपयोगकर से ऑब्जेक्ट के कार्यान्वयन ब्योरे (implementation details) को छिपाना होता है। एनकैप्सुलेशन सूचना (डाटा) से फंक्शनलिटि के कुछ हिस्से को अनाधिकृत एक्सेस से रोकता है। ऑब्जेक्ट अपने डाटा को अन्य ऑब्जेक्ट से छिपाता है. डाटा को केवल उन्हीं फंक्शन के द्वारा एक्सेस करने देता है, जो उस ऑब्जेक्ट के क्लास के पैकेज होते हैं।

एनकैप्सुलेशन का सबसे बढ़िया उदाहरण वह कैप्सूल है जो आपने कभी बीमारी के समय लिया होगा या देखा होगा। कैप्सूल के अंदर क्या है वह बाहर से नहीं दिखता। कैप्सूल के अंदर की औषधि को हम डाटा तथा फंक्शन समझ सकते हैं।

इनहेरिटेन्स (Inheritance)

इनहेरिटेन्स ऑब्जेक्ट के दो क्लासों के बीच का संबंध होता है। यह संबंध इस प्रकार होता है कि चाइल्ड क्लास पेरेन्ट क्लास के सभी प्रासंगिक फीचरों को प्राप्त कर ले। चाइल्ड को सब क्लास तथा पेरेण्ट क्लास को सुपर क्लास कहा जाता है। इनहेरिटेन्स एक ऐसी प्रक्रिया है जिसमें एक क्लास (चाइल्ड अथव व्युत्पन्न क्लास) किसी दूसरे क्लास (पेरेण्ट अथवा आधार क्लास) के प्रॉपर्टी, मेथड तथा इवेण्ट को इनहेरिट करता है।

चाइल्ड क्लास अपने प्रॉपर्टी, मेथड तथा इवेण्ट को एक्सेस करने के अतिरिक्त पेरेण्ट क्लास के भी प्रॉपर्टी, मेथड तथा इवेण्ट को एक्सेस कर सकता है। यदि चाइल्ड क्लास का पेरेण्ट क्लास भी एक व्युत्पन्न (derived) क्लास है, तो उसके आधार (base) क्लास के भी सभी प्रॉपर्टी, मेथड तथा इवेण्ट को चाइल्ड क्लास एक्सेस कर सकता है। पेरेण्ट क्लास तथा इसके व्युत्पन्न क्लास के पूरे संकलन को हायरैरकि (hierarchy) कहते हैं।

इनहेरिटेन्स के उपयोग करने के दो लाभ हैं। पहला, बावजूद कुछ समान फीचरों को शेयर कर पाता है। दूसरा यह कि इससे एक ही कोड को पुनः उपयोग में लाया जा सकता तो यह है कि इससे दो या अधिक क्लास एक दूसरे से भिन्न होने के है। जिसे हम कोड रियूजेबिलिटी (Code Reusability) कहते हैं। फलस्वरूप क्लासों में डुप्लीकेट कोड को मेनटेन करने के झंझट से मुक्ति होती है।

इन्हीं कारणों से इनहेरिटेन्स ऑब्जेक्ट ओरिएण्टेड प्रोग्रामिंग के कई शक्तिशाली उपकरणों से एक है। इनहेरिटेन्स में जो भी प्रमुख कार्य होता है वह पेरेण्ट क्लास के सदस्य वेरियेबल तथा मेथड की योजना तथा परिभाष होती है। ऐसा करने से आप चाइल्ड क्लास को अधिक लाभ देते हैं। 

वी. बी. डॉट नेट में क्लास के पेरेण्ट को Inherits की-वर्ड से पहचानते हैं। इनहेरिटेन्स को समझने के लिए इस कोडिंग को देखें :

Class Simple Cale
Private Num1, Num2 As Double
Public Property FirstNumber ()
            Get

                                     Return Num1
            End Get
Set (ByVal Value As Double)
Num1 = Value

End Set
End Property
Public Property SecondNumber() As Double

           Get
                      Return Num2

End Get
Set (ByVal value As Double)
Num 2 = value
End Set

End Property
Function Add () As Double
Return FirstNumber + SecondNumber

End Function

Function Subtract () As Double
Return FirstNumber – SecondNumber

End Function

Function Multiply () As Double
Return FirstNumber * SecondNumber
End Function
Function Divide () As Double
Return FirstNumber / SecondNumber
End Function

End Class

उपरोक्त क्लास SimpleCalc की कोडिंग है जिसमें वेरियेबल डिक्लेअरेशन, प्रॉपर्टी तथा फंक्शन बनाये गये हैं। अब मान
लें कि आप इसी प्रोग्राम में उपरोक्त सभी वेरियेबल प्रॉपर्टी तथा फंक्शन का उपयोग दूसरे क्लास ScientificCalc में करना चाहते हैं, तो आपको क्या करना होगा? आपको उपरोक्त सभी कोड को दूसरे क्लास में उपयोग करने के लिए कोड लिखने की आवश्यकता नहीं। इसके लिए एक ही लाइन काफी है-

Class Scientific Calc                            // दूसरा क्लास
Inherits SimpleCalc                             यह लाइन SimpleCalc क्लास के पूरे कोड को अदृश्य रूप में कॉपी कर देगा।


अब आगे चाहें तो इसमें आप कुछ भी डाल सकते हैं। उदाहरण के लिए,

Function Expo() As Double
Return FirstNumber ^ SecondNumber

End Function

End Class                                // क्लास पूरा हुआ 

अब आप SimpleCale क्लास के माध्यम से Add, Sub, Multiply. Divide और Expo फंक्शन का कार्य कर सकते हैं  जबकि आपने केवल Expo फक्शन हो इस क्लास में बनाया है।

इनहेरिटेन्स के लाभ

  • वास्तविक दुनिया की मॉडलिंग (real world modelling).
  • सॉफ्टवेयर रियूजेबिलिटि (code reusability)
  • सॉफ्टवेयर विस्तारण (software extensibility)

पॉलिमॉरफिजम (Polymorphism)

पॉलिमॉरफिजम का शाब्दिक अर्थ बहुरूपी अर्थात कई रूपों वाला होता है। कहने का तात्पर्य यह है कि ऊपस में एक ही एनटिटि के कई रूप हो सकते हैं।

उदाहरण के लिए, हम एक फंक्शन लेते हैं, जो दो संख्याओं को जोड़ता है। अब यदि जोड़ दो इंटिजर का है, तो फंक्शन परिणाम के रूप में इंटिजर योग लौटाता है। यदि ये इंटीजर के स्थान फ्लोटिंग प्वाइंट संख्याएँ हैं, तो योग फ्लोटिंग प्वाइंट होगा। और यदि इनपुट दो स्ट्रिंग है, तो फंक्शन दोनों स्ट्रिंग को परिणाम के रूप में मिला देता है। तीनों ही अवस्था में फंक्शन का नाम एक ही रहता है। फंक्शन के इस योग्यता को ही पॉलिमॉर्फिजम कहते हैं। ऊपस भाषाओं में पॉलिमॉर्फिजम ऑपरेटर ओवरलोडिंग (operator overloading) तथा फंक्शन ओवरलोडिंग के माध्यम से लागू होता है।

नोट : एन्ट्रैक्शन सिस्टम के जटिल विवरणों को छिपा कर केवल अवश्यक फीचर को ही उजागर करने की प्रक्रिया है।

आओ सीखें- एक कंसोल प्रोग्राम बनायें जिसमें पॉलिपॉफिज्म के कार्यान्वयन को दर्शायें।

समाधान :

  1. File मेन्यू को क्लिक करें तथा New Project का चयन करें ।
  2. New Project डायलॉग बॉक्स खुलने के पश्चात Templates पेन में Console Application को क्लिक करें।
  3. Name टेक्स्टबॉक्स में My Project  टाइप करें तथा OK को क्लिक करें। उसके बाद कोड डिजायनर खुलेगा।
  4. तथा कोड डिजायनर में निम्नलिखित कोड टाइप करें-

Module Module 1
Sub Main ()
Dim two As New One()
Console. WriteLine (two.add (10))
‘calls the function with one argument
Console.WriteLine(two.add(10, 20))
‘calls the function with two arguments
Console. WriteLine (two.add (10, 20, 30))
‘calls the function with three arguments
Console. Read ()
End Sub

End Module

Public Class One
Public i, j, k As Integer

Public Function add(ByVal i As Integer) As Integer
‘function with one argument
Return i
End Function

Public Function add(ByVal i As Integer, ByVal j As Integer) As Integer
‘function with two arguments
Return i + j
End Function

Public Function add(ByVal i As Integer, ByVal j As Integer, ByVal k As Integer) As Integer
‘function with three arguments
Return i + j + k
End Function

End Class

  • F5 को दबायें। इसका परिणाम दिखेगा। 

उपरोक्त कोड में तीन Add फंक्शन को एक ही मॉडयूल के अंदर प्रस्तुत किया गया है। परन्तु सबके पैरामीटर अलग अलग है। पहला फंक्शन
Public Function add(ByVal i As Integer) As Integer में केवल 1 वेरियेबल का मान पास किया गया है जो परिणाम में 10 प्रकट करता है।
दूसरा फंक्शन Public Function add (By Vali As Integer, By Val j As Integer) दो वेरियेबल i तथा j पास करता है। परिणामस्वरूप दोनों के योग को परिणामस्वरूप 30 प्रदर्शित करता है।
तथा तीसरा फंक्शन Public Function add(ByVal i As Integer, ByVal j As Integer, ByVal k As Integer) As Integer
तीन वेरियेबल i, j, k को पास करता तथा परिणाम के रूप में 60 प्रकट करता है।

मेन्यू के साथ कार्य करना | Working With Menu – Best Info

0
मेन्यू के साथ कार्य करना - वी. बी. डॉट नेट | मेन्यू टूल्स क्या होता है एवं मेन्यू के साथ कार्य करना | What Are Menu Tools And Uses
मेन्यू के साथ कार्य करना - वी. बी. डॉट नेट | मेन्यू टूल्स क्या होता है एवं मेन्यू के साथ कार्य करना | What Are Menu Tools And Uses

Table of Contents

मेन्यू के साथ कार्य करना – वी. बी. डॉट नेट | मेन्यू टूल्स क्या होता है एवं मेन्यू के साथ कार्य करना | What Are Menu Tools And Uses

मेन्यू के साथ कार्य करना – किसी ग्राफिकल यूजर इंटरफेस अर्थात् किसी विण्डोज एप्लीकेशन के बारे में आपसे यह पूछा जाय कि आप इस एप्लीकेशन में केवल एक टूल अगर रखना चाहें, तो वह क्या रखेंगे तो मैं कहूँगा कि मेन्यू को रखा जाय। मेन्यू और टूल्स जो आइकन के रूप में पटिटकाओं (bars) (जैसे स्टैण्डर्ड टूल बार तथा फॉरमेटिंग टूल बार) पर होते हैं में एक बुनियादी फर्क यह है कि मेन्यू को माउस तथा की-बोर्ड दोनों की सहायता से उपयोग किया जा सकता है। इस लेख में मैं आपको वी. बी. डॉट नेट में विभिन्न प्रकार मेन्यू को विकसित करना सीखा रहा हूँ।

मेन्यू के बुनियादी एलीमेंट्स (Basic Elements of Menu)

आप नोटपैड, वर्डपैड, माइक्रोसॉफ्ट वर्ड, अडोब पेजमेकर, पेण्ट या इस तरह का कोई भी एप्लीकेशन खोलें। तथा इनके मेन्यू को आप देखें तो आप पायेंगे कि इनमें कुछ मेन्यू समान हैं। साथ ही मेन्यू के अंदर के दो अवयव एक्सेस की तथा शॉर्ट-कट भी समान हैं। इनमें मुख्य मेन्यू जो समान होते हैं वे File, Edit, View, Window तथा Help हैं।

आप इन मेन्यू को जब क्लिक करते हैं, तो नीचे प्रकट होते हुए कुछ मेन्यू दिखेंगे। इनकी इसी प्रकृति के कारण इन्हें हम पुल-डाउन (pull down) मेन्यू कहते हैं। इन मेन्यू में एक और अवयव आप देखेंगे। जिन्हें हम सेपेरेटर बार (seperator bar) कहते हैं। सेपेरेटर बार का उपयोग मेन्यू को आकर्षक बनाने तथा एक समान मेन्यू को इकट्ठा करने में भी हो सकता है। अब मान लें कि आप File मेन्यू को खोलना चाहते हैं, तो इसे दो तरीके से खोल सकते हैं।

पहला आप माउस से इसको क्लिक करें या फिर दूसरा Alt और F की-बोर्ड से एक साथ दबायें। F इस मेन्यू का एक्सेस की है जिसे हम हॉट-की (hot key) भी कहते हैं। File के अंदर कई मेन्यू मिलेंगे जिसमें कुछ मेन्यू के नाम के साथ शॉर्ट-कट-की का भी उल्लेख होता है। उदाहरणार्थ New के साथ Ctrl+N तथा Open के साथ Ctrl+O होते हैं। एक महत्वपूर्ण अवयव इसमें आप यह देखेंगे कि कुछ मेन्यू के नाम के बाद इलिपसिस (ellipsis) अर्थात् तीन बिन्दु होता है। यह इलिपसिस यह संकेत देता है कि आप यदि इसे क्लिक करते हैं तो डायलॉग बॉक्स प्रकट होगा जहाँ से आप उपयुक्त विकल्प का चयन कर सकते हैं।

इसके अतिरिक्त कुछ मेन्यू के पहले आइकन होता है जो टूल बार पर भी उपलब्ध होता है। इसके अतिरिक्त मुख्य मेन्यू के अंदर कुछ मेन्यू ऐसे होते हैं जिसके दायीं ओर एक छोटा ऐरो (arrow) होता है जो यह संकेत करता है कि इसके अंदर कुछ और मेन्यू हैं।

मेन्यू टूल्स क्या होता है एवं उपयोग | मेन्यू के साथ कार्य करना | What Are Menu Tools And Working With Menu

मेन्यू के साथ कार्य करना - वी. बी. डॉट नेट | मेन्यू टूल्स क्या होता है एवं मेन्यू के साथ कार्य करना | What Are Menu Tools And Uses
मेन्यू के साथ कार्य करना – वी. बी. डॉट नेट | मेन्यू टूल्स क्या होता है एवं मेन्यू के साथ कार्य करना | What Are Menu Tools And Uses

पुल डाउन मेन्यू बनाना (Creating a Pull Down Menu)

विजुअल बेसिक 6.0 तथा विजुअल बेसिक डॉट नेट दोनों ही के मेन्यू बनाने के तरीके बिल्कुल अलग है। विजुअल बेसिक 6.0 में यह कार्य मेन्यू एडिटर की सहायता से होता था। बी. बी. डॉट नेट में यह कार्य MemuStrip नाम के कम्पोनेण्ट से होगा जो टूल बॉक्स के Menus & Toolbars खण्ड में उपलब्ध होता है। पुल डाउन मेन्यू बनाने में निम्नलिखित चरण होते :

  1. नया प्रोजेक्ट शुरू करें तथा फॉर्म पर मेन्यू बार को जोड़ने के लिए टूलबॉक्स से Menus & Toolbars खण्ड में MenuStrip को दो बार क्लिक करें। ऐसा करने पर कम्पोनेण्ट ट्रे में MenuStrip1 कम्पोनेण्ट जुड़ जायगा।
  2. फॉर्म के उपर बायीं ओर मेन्यू की जगह पर Type Here बॉक्स के अंदर क्लिक करें।
  3. इसी प्रकार आगे के मुख्य मेन्यू बनायें।
  4. मुख्य मेन्यू के अंदर के मेन्यू के लिए मुख्य मेन्यू को क्लिक करें और फिर उसके नीचे Type Here बॉक्स को क्लिक करें। तथा Type Here टेक्सबॉक्स में उस मेन्यू (उदाहरणार्थ New) का नाम लिखें।

मेन्यू को नाम देना (Naming the Menus)

मेन्यू को नाम देने में थोड़ी सावधानी बरतना आवश्यक है। यह इसलिए क्योंकि इसी के आधार पर आपको कोडिंग करना होगा। इसका नाम लिखने की बेहतर विधि मेन्यू के नाम के आगे mnu उपसर्ग जोड़ना होता है। mnuFile, mnuNew इत्यादि इसके उदाहरण हैं। मेन्यू को एक नाम देने के लिए निम्नलिखित करें :

  1. उस मेन्यू को क्लिक करें तथा प्रॉपर्टीज़ विण्डो को खोलें। प्रोपर्टीज़ विण्डो को खोलने के लिए
    View Properties Window का चयन करें या, F4 दबायें।
  2. Name प्रॉपर्टी में जाएँ और इच्छित नाम लिखें।

ध्यान दें  : मेन्यू के लिए कोडिंग लिखना आवश्यक है। एक बात याद रखें कि मेन्यू डिजाइन कर लेने से ही मेन्यू कार्य करना शुरू नहीं कर देता है बल्कि इसके लिए मेन्यू डिजाइन करने के बाद आपको कोड भी लिखना होगा।

आमतौर पर जब आप कोई मेन्यू बनाते हैं, तो उसका नाम वी. बी. डॉट नेट इस प्रकार बाई डिफॉल्ट दे देता है ताकि आप उसको आसानी से पहचान सकें। उदाहरण के तौर पर, File मेन्यू के लिए FileToolStripMenultem तथा New मेन्यू के लिए NewToolStripMenuītem आसानी से पहचाने जाने योग्य नाम हैं। अतः उसके नाम में अधिक बदलाव की आवश्यकता नहीं होती है। परन्तु बाई डिफॉल्ट नाम बड़े होने के कारण कोडिंग में असुविधा हो सकती है।

मेन्यू के मध्य सेपेरेटर बार डालना (Putting a Separator Bar Between Menus)

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

  1. उस फॉर्म को खोलें जिसके मेन्यू में आप सेपेरेटर बार जोड़ना चाहते हैं।
  2. जहाँ आप सेपेरेटर बार जोड़ना चाहते हैं उस Type Here बॉक्स को क्लिक करें तथा हायफन (-) टाइप करें।
  3. अब इसे F5 की दबाकर रन कराएं। इसे रन होने पर आप इसमें सेपेरेटर बार देखेंगे।

शॉट-कट असाइन करना (Assigning Shortcut Keys)

आप माइक्रोसॉफ्ट वर्ड या इस तरह के किसी भी वर्ड प्रोसेसर या अन्य किसी भी एप्लीकेशन में Ctrl+O का उपयोग का Open डायलॉग बॉक्स को खोलने से परिचित होंगे। Ctrl+O ओपन डायलॉग बॉक्स को खोलने का शॉर्ट कट की है। आप अपने एप्लीकेशन के मेन्यू में वी. बी. डॉट नेट की सहायता से शॉर्ट-कट की असाइन कर सकते हैं। शॉर्ट-कट की असाइन करने का सबसे बड़ा लाभ यह है कि आप माउस की सहायता से मेन्यू के चयन के बदले की-बोर्ड से भी उस कार्य को कर सकते हैं। आइए हमने पीछे जो मेन्यू एप्लीकेशन पर कार्य किया है उसमें New मेन्यू को Ctrl+N असाइन करते हैं। इसके लिए आपको निम्नलिखित पदों की आवश्यकता होगी :

  1. सबसे पहले उस फॉर्म को खोलें जिसमें आपने मेन्यू बनाया है।
  2. उस पुल-डाउन मुख्य मेन्यू तथा फिर उस उप-मेन्यू को क्लिक करें जिसके लिए आप शॉर्ट-कट की असाइन करना चाहते हैं।
  3. F4 दबाकर प्रॉपर्टीज़ विण्डो को खोलें यदि वह प्रदर्शित न हो।
  4. प्रॉपर्टीज़ विण्डो से ShortcutKeys प्रॉपर्टी के डाउन ऐरो का चयन करें तथा Modifiers: के अंदर इच्छानुसार Ctrl, Shift अथवा Alt का चयन करें तथा Key: पुल डाउन मेन्यू को क्लिक करें और वर्ण या फंक्शन की का चयन करें।

इसके बाद फॉर्म पर कहीं भी क्लिक करें। फॉर्म पर देखेंगे कि शॉर्ट-कट की प्रकट हो गया है। शॉर्ट-कट की असाइन करते समय आप यह याद रखें कि शॉट-कट की कोई फंक्शन की, Ctrl के साथ कोई वर्ण (A-Z) या Ctrl और Alt के साथ कोई वर्ण हो सकता है। Alt की या Shift की के साथ किसी वर्ण का समायोजन शॉर्ट-कट की नहीं हो सकता। ऐसा करने पर आपको त्रुटि के अतिरिक्त कुछ नहीं मिलेगा।

ध्यान दें : शॉर्ट-कट की को अदृश्य करना । यदि आप चाहें, तो असाइन किये गये शॉर्ट-कट की को पुल डाउन मेन्यू में छिपा सकते हैं। इसके लिए आपको प्रॉपर्टीज विण्डो से इसके प्रॉपर्टी ShowShortcutkeys को False सेट करना होगा। अपितु इसके बावजूद शॉर्ट-कट की कार्य करेगा।

मेन्यू कमाण्ड से पहले चेकमार्क डालना (Inserting Checkmark Before Menu Command)

पुल डाउन मेन्यू में चेकड् मेन्यू का उपयोग तो आपने देखा ही होगा। पुल डाउन मेन्यू के मेन्यू कमाण्ड के आगे चेक मार्क की उपस्थिति यह बताता है कि एप्लिकेशन में वह विकल्प एक्टिव है। माइक्रोसॉफट वर्ड के Window के अंदर 1 Document1 के आगे चेकमार्क को दिखाया गया है जो यह दर्शाता है कि यह विण्डो खुला है।

वी. बी. डॉट नेट में आप भी इस विकल्प को जोड़ सकते हैं। आइए हम यह जानते हैं कि कैसे मेन्यू कमाण्ड के पहले
चेकमार्क डालते हैं। इसके लिए निम्नलिखित पदों का उपयोग होता है-

  1. उस फॉर्म को खोलें जिसके मेन्यू एप्लीकेशन को आप संपादित करना चाहते हैं।
  2. उस पुल डाउन मुख्य मेन्यू तथा उप-मेन्यू का चयन करें जिसके पहले आप चेक मार्क जोड़ना चाहते हैं।
  3. प्रॉपर्टीज विण्डो को F4 दबाकर या View Properties Window का चयन करके खोलें। 
  4. Check State प्रॉपर्टी के डाउन ऐरो को क्लिक करें तथा Checked का चयन करें। यदि आप चेक के स्थान पर बिन्दु चाहते हैं, तो CheckState प्रॉपर्टी को Indeterminate सेट करें।

इसके पश्चात् आपको फॉर्म पर मेन्यू कमाण्ड के पहले चेक के स्थान पर बिन्दु दिखेगा। यदि आप चाहते हैं कि मेन्यू क्लिक करने पर चेक तथा अनचेक हो तो CheckOnClick प्रॉपर्टी को True सेट करें। ऐसा नहीं करने पर मेन्यू चेकड् ही रहेगा। जब आप CheckState में Checked या Indeterminate का चयन कर लेते हैं, तो Checked प्रॉपर्टी स्वयं ही True सेट हो जाता है।

मेन्यू कमाण्ड को मद्धिम करना (Dimming Menu Commands)

आप प्रायः यह देखते होंगे कि पुल डाउन मेन्यू में कुछ मेन्यू कमाण्ड स्पष्ट नहीं दिखते हैं। इसका कारण यह है कि इनकी उस समय आवश्यकता नहीं होती। उदाहरण के तौर पर जब आप किसी वर्ड प्रोसेसर में टेक्स्ट या ऑब्जेक्ट तब टेक्स्ट या ऑब्जेक्ट मनिप्यूलेट करने वाले मेन्यू स्वतः हाइलाइट हो जाते हैं।

उदाहरण के तौर पर, जब आप टेक्स्ट का चयन करने के बाद Cut या Copy मेन्यू का चयन करते हैं, तो Cut या Copy मद्धिम हो जाता है तथा Paste हाइलाइट हो जाता है। जबकि इससे पहले Paste मेन्यू कमाण्ड मद्धिम रहता है यद्यपि ऐसा अधिकतर कोडिंग के माध्यम से होता है। फिर भी डिजाइन समय में किसी मेन्यू आइटम को मद्धिम बनाने के निम्नलिखित पदों का अनुसरण करें :

  1. उस फॉर्म को खोलें जिसके पुल डाउन मेन्यू के साथ संपादन करना चाहते हैं।
  2. फिर उस पुल डाउन मुख्य मेन्यू तथा उप मेन्यू को क्लिक करें।
  3. प्रॉपर्टीज़ विण्डो को खोलें। यदि प्रॉपर्टीज विण्डो प्रकट नहीं है, जो उसे प्रकट करने के लिए F4 दबायें या View Properties Window का चयन करें।
  4. प्रॉपर्टीज विण्डो से Enabled प्रॉपर्टी में False सेट करें।
    आप कोडिंग लिखकर भी किसी मेन्यू को रन समय में डिम या अनडिम कर सकते हैं। कोडिंग मे माध्यम से मेन्यू आइटम
    को मद्धिम (dim) करने का यह तरीका है :
                      <nameofmenu> Enabled = False
    इसको अनडिम या हाइलाइटेड करने का यह कोड है-
                      <nameofmenu> Enabled = True
    उदाहरण के लिए, (a) में Cut, Copy और Paste हाइलाइटेड तथा चित्र हाइलाइटेड हैं।

ऐसा आप भी कर सकते हैं। इसके लिए कोडिंग Form1 के Load इवेण्ट में इस प्रकार लिखा जायेगा :

Private Sub Form1_Load (ByVal sender As System. Object, ByVal e As System.EventArgs) Handles
MyBase.Load

       Paste ToolStripMenuItem. Enabled = True
       CutToolStripMenuItem.Enabled = True
       CopyToolStripMenuītem. Enabled = True

End Sub

अब जब हम Cut का प्रयोग कर लेते हैं, तो Cut और Copy दोनों अनहाइलाइटेड हो जाते हैं। और Paste हाइलाइटेड हो जायेगा। इसके लिए हम कोड इस प्रकार CutToolStripMenultem के Click इवेण्ट हैण्डलर में लिखेंगे।

Private Sub CutToolStripMenuItem1_Click(ByVal sender As System. Object, ByVal e As System.EventArgs)Handles CutToolStripMenuItem.Click
       txtData.Cut()
         CopyToolStripMenuItem.Enabled
         CutToolStripMenuItem.Enabled

End Sub

मेन्यू कमाण्ड्स का अदृश्य करना (Making Menu Commands Invisible)

जब आप किसी एप्लीकेशन को विकसित करते हैं तब सबसे अधिक जो महत्वपूर्ण होता है वह यह कि प्रयोक्ता की आवश्यकताओं के अनुसार टूल्स को उपलब्ध कराया जाये तथा अनावश्यक टूल्स से प्रयोक्ता को प्रमित न किया जाय। आपने माइक्रोसॉफ्ट वर्ड 2003 खोलते समय दो प्रकार का विण्डो देखा होगा। एप्लीकेशन विण्डो में प्रकट होने वाले मेन्यूबार के साथ तब एक और मेन्यू Chart मेन्यू जुड़ जाते हैं जब आप चार्ट के साथ कार्य करना शुरू करते हैं। माइक्रोसॉफ्ट वर्ड के दोनों प्रकार के मेन्यू को दर्शाया गया है। मेन्यू कमाण्ड को अदृश्य बनाने के लिए निम्नलिखित पदों का अनुसरण करें-

  1. उस फॉर्म को खोलें जिसके पुल डाउन मेन्यू को आप संपादित करना चाहते हैं।
  2. फिर उस पुल डाउन मुख्य मेन्यू तथा उप मेन्यू को क्लिक करें।
  3. प्रॉपर्टीज विण्डो को खोलें। यदि प्रॉपर्टीज़ विण्डो प्रकट नहीं है, तो उसे प्रकट करने के लिए F4 दबायें या View → Properties Window का चयन करें।
  4. Visible प्रॉपर्टी को क्लिक करें तथा False को सेट करें।

अदृश्य मेन्यू को प्रकट करना तथा इसे पुनः अदृश्य करना कोडिंग के माध्यम से भी किया जा सकता है। इसका सिन्टैक्स इस प्रकार है :
           <nameofmenu>. Visible = False
किसी मेन्यू को अदृश्य करने के लिए उपयोग होता है। जबकि अदृश्य मेन्यू को प्रकट करने का सिन्टैक्स यह
          <nameofmenu>. Visible = True

ध्यान दें  : मुख्य मेन्यू को अदृश्य सावधानी से करें। यहाँ पर याद रखने वाली बात यह है कि यदि मुख्य मेन्यू अदृश्य बनाते हैं, तो इसके अंदर के सभी मेन्यू कमाण्ड अदृश्य हो जायेंगे।

मेन्यू के अंदर मेन्यू का निर्माण करना (Creating Menus Under Menus)

एक पुल डाउन मेन्यू को दर्शाया गया है जिसमें एक मेन्यू के अंदर मेन्यू हैं और उस मेन्यू के अंदर भी कई मेन्यू हैं। इसी प्रकार आप वी. बी. डॉट में कई स्तर तक मेन्यू का निर्माण कर सकते हैं। किसी मेन्यू के अंदर मेन्यू उपलब्ध है यह उस मेन्यू में एक क्षैतिज ऐरो (>) के द्वारा दर्शाया जाता है। कई स्तर तक के सब-मेन्यू बनाना किसी एप्लीकेशन का बढ़िया पक्ष नहीं होता है। इसके लिए डायलॉग बॉक्स बेहतर विकल्प है। मेन्यू के अंदर अर्थात् सब मेन्यू बनाने में निम्नलिखित पद प्रयुक्त होते हैं-

  1. उस फॉर्म को खोलें जिसके पुल डाउन मेन्यू में आप सब-मेन्यू जोड़ना चाहते हैं।
  2. उस पुल डाउन मुख्य मेन्यू को खोलें जिसमें आप सब-मेन्यू जोड़ना चाहते हैं।
  3. उस उप-मेन्यू को क्लिक करें जहाँ आप सब-मेन्यू प्रकट करना चाहते हैं। 
  4. इसके बाद दायीं ओर Type Here बॉक्स प्रकट होता है। Type Here बॉक्स में सब-मेन्यू का नाम टाइप करें।
  5. अब आप जितना चाहें सब-मेन्यू इसी प्रकार बना सकते हैं। इसके लिए उपरोक्त पद को दोहरायें।

मेन्यू के लिए कोड लिखना (Writing Code for Menus)

जब आप मेन्यूबार डिजाइन करते हैं और उसमें मेन्यू जोड़ते हैं, तो केवल मेन्यूबार और मेन्यू बनाने से ही मेन्यू कार्य नहीं करने लगता है। बल्कि हम प्रत्येक उप-मेन्यू (मुख्य मेन्यू File, Edit के लिए इसकी आवश्यकता नहीं है) के लिए कोड लिखते हैं। मेन्यू के लिए कोड लिखने के लिए यह करें-

  1. उप-मेन्यू को दो बार क्लिक करें जिसके लिए आपको कोड लिखना है। तत्पश्चात् कोड विण्डो में उस उप-मेन्यू नाम का इवेण्ट हेण्डैलर देखेंगे।
  2. अब आप Private Sub तथा End Sub के बीच कोड लिखें। उदाहरण के लिए, चित्र 8.14 में Color के अंदर Aqua मेन्यू बनाया गया है। जिसका उद्देश्य टेक्स्ट के रंग को उस रंग से रंगना है। Aqua मेन्यू के लिए यदि आप कोड लिखना चाहें तो इसके लिए कोड इस प्रकार लिखें- 

             Private Sub AquaToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As

System. EventArgs) Handles AquaToolStripMenultem. Click

          txtData. ForeColor = Color.Aqua
End Sub txtData फॉर्म पर जोड़े गए रिचटेक्स्ट बॉक्स का नाम है । कोड डिजायनर में यह किस प्रकार लिखा गया है इसे दिखाया गया है ।

पॉप अप मेन्यू ( Pop Up Menu)

पॉप अप का शाब्दिक अर्थ अप्रत्याशित रूप से प्रकट होना होता है। पॉप अप मेन्यू के प्रकट होने का एक विशेष संदर्भ होता है। उदाहरणार्थ जब हमने टेक्स्ट का चयन कर पॉप अप मेन्यू को प्रकट करते हैं, तो उसमें उपलब्ध मेन्यू कुछ अलग हैं। जबकि पॉप अप मेन्यू चित्र संपादन के संदर्भ में मेन्यू उपलब्ध कराता है। चूँकि पॉप-अप मेन्यू का तक विशेष संदर्भ होता है इसे हम तकनीकी शब्दों में कण्टेक्स्ट मेन्यू (context menu) के नाम से जानते हैं। कण्टेक्स्ट मेन्यू तब प्रकट होते हैं जब हम आमतौर पर दायीं क्लिक करते हैं।

कण्टेक्स्ट मेन्यू बनाना (Creating A Context Menu)

कण्टेक्स्ट मेन्यू बनाना भी मेन्यू तथा उप-मेन्यू की तरह ही होता है। इसके लिए आप निम्न पदों का अनुसरण करें-

  1. उस फॉर्म को खोलें जिसपर आप कण्टेक्स्ट मेन्यू को प्रकट करना चाहते हैं।
  2. टूलबॉक्स में Menus & Toolbars के अंदर ContextMenuStrip को दो बार क्लिक करें। तत्पश्चात् विजुअल बेसिक डॉट नेट फॉर्म के नीचे कम्पोनेण्ट्स ट्रे में ContextMenuStrip आइकन डिस्प्ले होता है, साथ ही फॉर्म डिजाइन के ऊपर में आप कण्टेस्क्ट मेन्यू बॉक्स देखेंगे। बाई डिफॉल्ट इसका नाम ContextMenuStrip1 है।
  3. कण्टेक्स्ट मेन्यू बॉक्स में Type Here बॉक्स को क्लिक करें तथा कमाण्ड का नाम Cut, Copy इत्यादि आवश्यकतानुसार टाइप करें।
  4. जितना कमाण्ड आप पॉप-अप मेन्यू में चाहते हैं उपरोक्त पदों के माध्यम से जोड़ सकते हैं। इसके सेपेरेटर बार उसी विधि से बनाये जाते हैं जिस विधि से मुख्य मेन्यू में बनाये जाते हैं।

कण्टेस्क्ट मेन्यू को फॉर्म में जोड़ना (Adding the Context Menu to You Form)

आप ऊपर बनाये गये पॉप-अप मेन्यू को तब तक अपने फॉर्म पर प्रकट नहीं कर सकते जब तक कि उसे फॉर्म से नहीं जोड़ते। इसे देखना है, तो ऊपर बनाये गये फॉर्म को F5 दबाकर रन करें। जिसके लिए आपने कण्टेस्क्ट मेन्यू बनाया है। और फॉर्म रन होने पर दायीं क्लिक करें। आप देखेंगे कि कोई कण्टेस्क्ट मेन्यू पॉप आप नहीं हुआ। इसका कारण यह है कि आपने उस पॉप-अप मेन्यू को फॉर्म से नहीं जोड़ा है। पॉप-अप मेन्यू को फॉर्म से जोड़ने के लिए यह करें-

  1. उस फॉर्म का चयन करें जिस के लिए आपने कण्टेस्क्ट मेन्यू बनाया है।
  2. प्रॉपर्टीज विण्डो को खोलें। प्रॉपर्टीज़ विण्डो को खोलने के लिए View Properties का चयन करें। या F4 की दबायें।
  3. प्रॉपर्टीज़ विण्डो में ContextMenuStrip ड्रॉप-डाउन ऐरे को क्लिक करें। ड्रॉप-डाउन लिस्ट में आप उस फॉर्म पर कण्टेक्स्ट मेन्यू के नाम देखेंगे।
  4. उस कण्टेक्स्ट मेन्यू के नाम को चयन करें जिसे आप फॉर्म पर प्रकट करना चाहते हैं। यहाँ सावधानी से आप सही कण्टेक्स्ट मेन्यू का चयन करें क्योंकि इस सूची में एक से अधिक कण्टेक्स्ट मेन्यू के नाम भी हो सकते हैं।

डायलॉग बॉक्स (Dialog Boxes)

पिछले खण्डों में आपने पुल-डाउन मेन्यू तथा पॉप-अप मेन्यू बनाना सीखा। पुल-डाउन मेन्यू तथा पॉप-अप मेन्यू आपके एप्लीकेशन में बहुत महत्वपूर्ण भूमिका निभाते हैं। इसके अतिरिक्त कई और चीजें हैं, जो एप्लीकेशन में कार्य करने के लिए सहायक होते हैं। इनमें डायलॉग बॉक्स का महत्वपूर्ण स्थान है। डायलॉग बॉक्स स्क्रीन पर प्रतिक्रिया के फलस्वरूप प्रकट होने वाले छोटे विण्डो होते हैं।

वी. बी. डॉट नेट में कई इन-बिल्ट डायलॉग बॉक्स यथा फाइल खोलने के लिए डायलॉग बॉक्स, फाइल को सुरक्षित करने के लिए डायलॉग बॉक्स, रंग करने के लिए डयलॉग बॉक्स, छापने के लिए डायलॉग बॉक्स प्रदान करता है। इसके अतिरिक्त हम वी. बी. डॉट नेट की सहायता बना सकते हैं। वी. बी. डॉट नेट के द्वारा प्रदान किये जा रहे इन-बिल्ट से अपने एप्लीकेशन में अपने डायलॉग बॉक्स डायलॉग बॉक्स की चर्चा पीछे के पाठ में किया गया है।

अपना डायलॉग बॉक्स बनाना (Creating Your Own Dialog Box)

आप जो अपना डायलॉग बॉक्स बनाना चाहते हैं, उसमें अधिकतर का उद्देश्य उपयोगकर्ता को कोई संदेश देना होता है। इस डायलॉग बॉक्स में एक कैप्शन (caption) जो शीर्षक पटिटका (title bar) होता है तथा एक आइकन, संदेश और OK, Cancel जैसे एक या अधिक बटन होते हैं। इसके लिए सिन्टैक्स इस प्रकार होगा-
MsgBox(“Message”, [Buttons/Value], “Title”)
उदाहरण के लिए,
MsgBox (“Sorry!! This help is not available now.”, MsgBoxStyle. Information, “Sorry!!”)
उपरोक्त कोड डायलॉग को स्क्रीन पर प्रकट करेगा। उपरोक्त कोड में MsgBox की-वर्ड है। पहले दोहरे उद्वरण चिन्ह के अंदर संदेश है। उसके बाद Buttons/Value तथा फिर दोहरे उद्वरण चिन्ह के अंदर डायलॉग के शीर्षक बार पर छपने वाला टेक्स्ट होता है।

यदि आप शीर्षक बार पर छपने वाला टेक्स्ट नहीं देते हैं, तो डायलॉग शीर्षक बार पर वी. बी. डॉट नेट प्रोजेक्ट का नाम दे देता है। आप Buttons के बदले इंटीजर मान भी दे सकते हैं। उदाहरण के लिए, यह कोड उपरोक्त कोड के समान परिणाम देगा- MsgBox (“Sorry!! This help is not available now.”, 64, “Sorry!!”)

डायलॉग में प्रयोग होने वाले आइडेन्टिफायर तथा विभिन्न बटन्स उनके मान तथा विवरण

बटनवैकल्पिक मानविवरण
MsgBoxStyle. AbortRetry Again2Abort, Retry तथा Ignore बटन के साथ डायलॉग प्रस्तुत करता है। इसमें कोई आइकन नहीं होता है।
MsgBoxStyle. ApplcationModel64OK बटन देता है। कोई आइकन नहीं होता है। यह सामान्य डायलॉग की तरह होता है।
MsgBoxStyle. Critical16384OK बटन देता है। इसमें क्रिटिकल आइकन  ý  होता है।
MsgBoxStyle. Exclamation524288OK बटन देता है। इसमें विस्मयादिबोधक आइकन  होता है।
MsgBoxStyle. Information0OK बटन देता है। इसमें सूचना आइकन होता है।
MsgBoxStyle. MsgBoxHelp32इसमें OK तथा Help बटन होता है। कोई आइकन नहीं होता
MsgBoxStyle. Msg BoxRight5इसमें केवल OK बटन होता है। तथा कोई आइकन नहीं होता है। इसमें आइकन बार पर कैप्शन दायी ओर प्रकट होता है।
MsgBoxStyle. OKCancel4OK तथा Cancel बटन प्रदान करता है। कोई आइकन नहीं होता है।
MsgBoxStyle. OKOnly0OK बटन बगैर आइकन के साथ डायलॉग प्रकट करता है।
MsgBoxStyle. Question16OK बटन के साथ डायलॉग लौटाता है। इसमें प्रश्न आइकन होता है।
MsgBoxStyle. RetryCancel48Retry तथा Cancel बटन वाला डायलॉग प्रदर्शित करता है। इसमें कोई आइकन नहीं होता है।
MsgBoxStyle. YesNo1Yes तथा No बटन वाला डायलॉग लौटाता है। इसमें कोई आइकन नहीं होता है।
MsgBoxStyle. YesNoCancel3Yes, No तथा Cancel बटन वाला डायलॉग प्रदर्शित करता है। इसमें भी कोई आइकन नहीं होता है। 

आज आपने क्या सीखा (What Did You Learn Today)

  • आप नोटपैड, वर्डपैड, माइक्रोसॉफ्ट वर्ड, अडोब पेजमेकर, पेण्ट या इस तरह का कोई भी एप्लीकेशन खोलें। तथा इनके मेन्यू को आप देखें तो आप पायेंगे कि इनमें कुछ मेन्यू समान हैं। साथ ही मेन्यू के अंदर के दो अवयव एक्सेस की तथा शॉर्ट-कट भी समान हैं। इनमें मुख्य मेन्यू जो समान होते हैं वे File, Edit, View, Window तथा Help मेन्यू के साथ कार्य करना |
  • आप इन मेन्यू को जब क्लिक करते हैं, तो नीचे प्रकट होते हुए कुछ मेन्यू दिखेंगे। इनकी इसी प्रकृति के कारण इन्हें हम पुल-डाउन (pull down) मेन्यू कहते हैं।
  • सेपेरेटर बार का उपयोग मेन्यू को आकर्षक बनाने तथा एक समान मेन्यू को इकट्ठा करने में भी हो सकता है। वी. बी. डॉट नेट में मेन्यू बनाने के लिए MenuStrip नाम का उपयोग होता है जो टूल बॉक्स के Menus & Toolbars खण्ड में उपलब्ध होता है।
  • मेन्यू को नाम देने में थोड़ी सावधानी बरतना आवश्यक है। यह इसलिए क्योंकि इसी के आधार पर आपको कोडिंग करना होगा। इसका नाम लिखने की बेहतर विधि मेन्यू के नाम के आगे mnu उपसर्ग जोड़ना होता है। mnuFile, mnuNew इत्यादि इसके उदाहरण हैं।
  • मेन्यू के लिए कोडिंग लिखना आवश्यक है। एक बात याद रखें कि मेन्यू डिजाइन कर लेने से ही मेन्यू कार्य करना शुरू नहीं कर देता है बल्कि इसके लिए मेन्यू डिजाइन करने के बाद आपको कोड भी लिखना होगा।
  • शॉर्ट-कट की असाइन करने के लिए ShortcutKeys प्रॉपर्टी का उपयोग होता है ।
  • यदि आप चाहें, तो असाइन किये गये शॉर्ट-कट की को पुल डाउन मेन्यू में छिपा सकते हैं। इसके लिए आपको प्रॉपर्टीज़ विण्डो से इसके प्रॉपर्टी ShowShortcutKeys को False सेट करना होगा। अपितु इसके बावजूद शॉर्ट-कट की कार्य करेगा।
  • मेन्यू में सेपेरेटर बार जोड़ने के लिए Type Here बॉक्स को क्लिक करें तथा हायफन (-) टाइप करें।
  • आप माइक्रोसॉफ्ट वर्ड या इस तरह के किसी भी वर्ड प्रोसेसर या अन्य किसी भी एप्लीकेशन में Ctrl+O का उपयोग का Open डायलॉग बॉक्स को खोलने से परिचित होंगे। Ctrl+O ओपन डायलॉग बॉक्स को खोलने का शॉर्ट कट की है। आप अपने एप्लीकेशन के मेन्यू में वी. बी. डॉट नेट की सहायता से शॉर्ट-कट की असाइन कर सकते हैं।
  • डिजाइन समय में किसी मेन्यू आइटम को मद्धिम करने के लिए प्रॉपर्टीज़ विण्डो से Enabled प्रॉपर्टी में False सेट करें।
  • आप कोडिंग लिखकर भी किसी मेन्यू को रन समय में डिम या अनडिम कर सकते हैं। कोडिंग मे माध्यम से मेन्यू आइटम को मद्धिम (dim) करने प्रारूप <nameofmenu>. Enabled = False है ।
  • मेन्यू कमाण्ड को अदृश्य बनाने के लिए इसके Visible प्रॉपर्टी को False को सेट करें।
  • अदृश्य मेन्यू को प्रकट करना तथा इसे पुनः अदृश्य करना कोडिंग के माध्यम से भी किया जा सकता है। इसका सिन्टैक्स <nameofmenu>. Visible = False है ।
  • पॉप अप का शाब्दिक अर्थ अप्रत्याशित रूप से प्रकट होना होता है। पॉप अप मेन्यू के प्रकट होने का एक विशेष संदर्भ होता है। चूँकि पॉप-अप मेन्यू का तक विशेष संदर्भ होता है इसे हम तकनीकी शब्दों में कण्टेक्स्ट मेन्यू (context menu) के नाम से जानते हैं।
  • कण्टेक्स्ट मेन्यू बनाने के लिए टूलबॉक्स से Menus & Toolbars के अंदर ContextMenuStrip का उपयोग होता है ।
  • पॉप-अप मेन्यू को फॉर्म से जोड़ने के लिए प्रॉपर्टीज़ विण्डो में ContextMenuStrip ड्रॉप-डाउन ऐरे को क्लिक करें। तथा उस कण्टेक्स्ट मेन्यू के नाम को चयन करें जिसे आप फॉर्म पर प्रकट करना चाहते हैं। 
  • डायलॉग बॉक्स स्क्रीन पर प्रतिक्रिया के फलस्वरूप प्रकट होने वाले छोटे विण्डो होते हैं। बी. बी. डॉट नेट में कह इन-बिल्ट डायलॉग बॉक्स यथा फाइल खोलने के लिए डायलॉग फाइल को सुरक्षित करने के लिए डायलॉग बॉक्स, रंग करने के लिए डयलॉग बॉक्स, छापने के लिए डायलॉग बॉक्स प्रदान करता है। इसके अतिरिक्त हम वी. बी. डॉट नेट की सहायता से अपने एप्लीकेशन में अपने डायलॉग बॉक्स भी बना सकते हैं।
  • अपना डायलॉग बॉक्स बनाने के लिए सिन्टैक्स MsgBox (“Message”, [Buttons/Value], “Title”) होगा ।