परिचय
Microsoft Access में डेटाबेस डेवलपर्स को डेटा एंट्री फॉर्म, रिपोर्ट और क्वेरी बनाने की अनुमति देने के लिए कई सुविधाएँ शामिल हैं जो उपयोगकर्ताओं को डेटाबेस में मौजूदा डेटा को क्वेरी करने और नया डेटा दर्ज करने में मार्गदर्शन कर सकती हैं। विभिन्न क्वेरी बिल्डर और विज़ार्ड टूल इस विकास प्रक्रिया को आसान बनाते हैं। हालाँकि, इन उपकरणों के साथ भी, ऐसी स्थितियाँ हो सकती हैं जहाँ डेवलपर और भी अधिक कार्यक्षमता जोड़ना चाहेगा जो पहले से MS Access विकास उपकरण द्वारा प्रदान नहीं की गई है। उदाहरण के लिए, हो सकता है कि डेवलपर खराब डेटा को डेटाबेस में सहेजे जाने से पहले उसे स्वचालित रूप से ठीक करना चाहता हो, किसी व्यावसायिक नियम का उल्लंघन होने पर अलर्ट दिखाना चाहता हो, उपयोगकर्ता को एक डेटा प्रविष्टि फ़ॉर्म से दूसरे में नेविगेट करने में मदद करना चाहता हो या कुछ कस्टम फ़िल्टर के साथ रिपोर्ट लॉन्च करना चाहता हो। इस तरह के अनुकूलन को पूरा करने का तरीका विजुअल बेसिक फॉर एप्लिकेशन प्रोग्रामिंग भाषा का उपयोग करके कोड जोड़ना है।
अनुप्रयोगों के लिए विजुअल बेसिक (वीबीए) एक्सेल और एक्सेस जैसे सॉफ्टवेयर उत्पादों के माइक्रोसॉफ्ट ऑफिस परिवार में उपयोग की जाने वाली प्रोग्रामिंग भाषा है। VBA भाषा 1964 में आविष्कृत "बेसिक" भाषा से ली गई है जो 1970 के दशक में पर्सनल कंप्यूटर पर लोकप्रिय हुई। नाम का "विज़ुअल" भाग Microsoft द्वारा Microsoft Windows में मूल प्रोग्रामिंग भाषा के उपयोग को दर्शाने के लिए जोड़ा गया था।
ऐसे कई ट्यूटोरियल हैं जो बेसिक प्रोग्रामिंग पेश करते हैं। यह ट्यूटोरियल वीबीए भाषा की विशेषताओं के एक छोटे उपसमुच्चय पर ध्यान केंद्रित करेगा जैसा कि एमएस एक्सेस में उपयोग किया जाता है।
सामग्री
- माइक्रोसॉफ्ट एक्सेस में इवेंट
- VBA कोड उदाहरण:सुनिश्चित करना कि नाम उचित स्थिति में हैं
- वीबीए भाषा - वैरिएबल, कंडीशनल स्टेटमेंट और टिप्पणियों की घोषणा करना और उन्हें असाइन करना
- वीबीए भाषा - कार्य, तरीके और उदाहरण
- वीबीए भाषा - गुण
- VBA कोडिंग एक्सरसाइज
- VBA में त्रुटियों को संभालना
- VBA में कस्टम SQL क्वेरी चलाना
अगला पृष्ठ Microsoft Access में ईवेंट का परिचय देता है।
माइक्रोसॉफ्ट एक्सेस में इवेंट
एक्सेस में, वीबीए प्रोग्रामिंग कोड फॉर्म और रिपोर्ट से जुड़ा होता है और इसे एक विशिष्ट समय पर या किसी विशिष्ट घटना की प्रतिक्रिया में चलाने के लिए सेट किया जा सकता है। प्रोग्रामिंग की इस शैली को कभी-कभी "ईवेंट आधारित" प्रोग्रामिंग के रूप में संदर्भित किया जाता है जिसका अर्थ है कि डेवलपर जो कोड लिखता है वह कुछ ईवेंट के जवाब में चलेगा ।
जब प्रपत्र दृश्य में कोई प्रपत्र प्रदर्शित किया जाता है, तो यह आम तौर पर अंतर्निहित तालिकाओं से किसी भी मौजूदा डेटा को क्वेरी करेगा और तब तक बस निष्क्रिय बैठे रहेंगे जब तक कि उपयोगकर्ता कुछ नहीं करता। उदाहरण के लिए, उपयोगकर्ता अगले रिकॉर्ड पर जाने के लिए नेविगेशन बटनों में से एक पर क्लिक कर सकता है, वे टेक्स्ट बॉक्स में क्लिक कर सकते हैं और कुछ नए डेटा में टाइप करना शुरू कर सकते हैं या वे फॉर्म को बंद करने के लिए बंद करें बटन पर क्लिक कर सकते हैं। इनमें से प्रत्येक क्रिया का परिणाम ईवेंट . होता है रूप में हो रहा है। माउस के प्रत्येक क्लिक या कीबोर्ड के स्ट्रोक को एक ईवेंट के रूप में नियंत्रित किया जाता है।
अधिकांश भाग के लिए, घटनाओं का एक डिफ़ॉल्ट व्यवहार होता है। "अगला रिकॉर्ड" नेविगेशन बटन पर क्लिक करने से प्रपत्र अगले डेटा रिकॉर्ड तक स्क्रॉल हो जाता है। जब कर्सर टेक्स्ट बॉक्स में हो तो "C" अक्षर टाइप करने से टेक्स्ट बॉक्स में "C" अक्षर दिखाई देता है। TAB कुंजी दबाने से कर्सर प्रपत्र पर अगले टेक्स्टबॉक्स (या नियंत्रण) पर कूद जाता है और इसी तरह। एक प्रोग्रामर इस डिफ़ॉल्ट व्यवहार को ओवरराइड या बढ़ा सकता है और घटना के जवाब में चलाने के लिए अपना कोड सम्मिलित कर सकता है।
एक्सेस फॉर्म और रिपोर्ट पर वीबीए प्रोग्रामिंग मुख्य रूप से विभिन्न घटनाओं का जवाब देने के लिए कोड लिखने पर केंद्रित है।
घटनाओं के विवरण में गोता लगाने से पहले, एक सरल उदाहरण को लागू करना शिक्षाप्रद हो सकता है। कुछ कोड को क्रियान्वित देखने के लिए, इस ट्यूटोरियल का अगला भाग डेटा एंट्री फॉर्म में VBA कोड जोड़ने के लिए वॉक-थ्रू प्रदान करता है।
VBA कोड उदाहरण:सुनिश्चित करना कि नाम उचित स्थिति में हैं
एमएस एक्सेस में डेटा एंट्री फॉर्म में वीबीए कोड जोड़ने का एक अपेक्षाकृत संक्षिप्त और सरल उदाहरण निम्नानुसार है। संक्षिप्तता के प्रयोजनों के लिए कई विवरणों को छोड़ दिया जाएगा। इस उदाहरण के बाद, इस ट्यूटोरियल के बाकी हिस्सों में उन विवरणों को भर दिया जाएगा।
यह उदाहरण ग्राहक . का उपयोग करता है डेटा प्रविष्टि प्रपत्र जिसे उन्नत एमएस एक्सेस प्रपत्र ट्यूटोरियल में अनुकूलित किया गया था। जारी रखने से पहले आप उस ट्यूटोरियल (या कम से कम ग्राहक डेटा प्रविष्टि फ़ॉर्म से संबंधित भाग) को पूरा करना चाह सकते हैं।
नई ग्राहक जानकारी दर्ज करते समय, हम यह सुनिश्चित करना चाहेंगे कि ग्राहक के नाम "उचित मामले" में दर्ज किए गए हैं। यानी नाम का पहला अक्षर कैपिटल लेटर और बाकी नाम लोअर केस में होना चाहिए। यदि उपयोगकर्ता दर्ज करता है:"जो" हम चाहते हैं कि फ़ॉर्म स्वचालित रूप से इसे उचित स्थिति में सही करे:"जो"।
घटनाओं के संदर्भ में, हम ग्राहक प्रपत्र पर प्रथम नाम फ़ील्ड के लिए अद्यतन के बाद की घटना से जुड़े कोड को जोड़ देंगे। इसका मतलब है कि बाद कुछ बदल दिया गया है (अपडेट किया गया ) फर्स्ट नेम फील्ड में, आफ्टर अपडेट इवेंट को ट्रिगर किया जाएगा और फिर हम जो कोड लिखेंगे, वह यह सुनिश्चित करने के लिए कार्रवाई में जाएगा कि जो भी नाम टाइप किया गया था वह उचित केस में बदल गया है।
निम्नलिखित कदम इस कोड को जगह देते हैं।
- डिज़ाइन मोड में ग्राहक डेटा प्रविष्टि खोलें।
- प्रथम नाम पर राइट-क्लिक करें टेक्स्टबॉक्स और गुण . चुनें पॉप-अप मेनू से।
- जब प्रॉपर्टी शीट प्रदर्शित होता है, ईवेंट टैब पर क्लिक करें। यह नीचे दिए गए चित्र में दिखाया गया है:
प्रदर्शित होने वाली घटनाओं की सूची पर ध्यान दें। प्रत्येक को उस विशिष्ट घटना पर प्रतिक्रिया देने के लिए प्रोग्राम किया जा सकता है जो प्रथम नाम . के साथ घटित होती है टेक्स्टबॉक्स।
- आफ्टर अपडेट इवेंट के दाईं ओर तीन बिंदुओं पर क्लिक करके एक नया ईवेंट हैंडलर बनाएं।
- बिल्डर चुनें विंडो दिखाई देगी। कोड निर्माता का चयन करें और फिर ठीक . क्लिक करें बटन।
- VBA कोड संपादन विंडो दिखाई देगी। ध्यान दें कि एक्सेस ने पहले ही सबरूटीन स्टब बना लिया है जो प्राइवेट सब शब्दों से शुरू होता है और एंड सब शब्दों के साथ समाप्त होता है। घटना जिसके लिए यह सबरूटीन प्रतिक्रिया देगा (अपडेट के बाद)।
लाइन एंड सब वह जगह है जहां यह विशेष सबरूटीन खत्म होगा।
- निजी सब और एंड सब के बीच खाली लाइन पर निम्नलिखित कोड जोड़ें:
FirstName = StrConv(FirstName, vbProperCase)
एक बार पूरा हो जाने पर, कोड इस प्रकार दिखाई देगा:
कोड की यह नई पंक्ति निम्न कार्य करती है:
StrConv एक फ़ंक्शन है जो फर्स्टनाम टेक्स्टबॉक्स की सामग्री लेता है और इसे दिए गए दूसरे पैरामीटर के अनुसार परिवर्तित करता है जो इस उदाहरण में vbProperCase है। इस रूपांतरण के बाद, परिणाम (बराबर चिह्न का उपयोग करके) वापस FirstName टेक्स्टबॉक्स में असाइन किया जाएगा। यह किसी भी चीज़ को अधिलेखित कर देगा जो वर्तमान में FirstName टेक्स्टबॉक्स में है। उदाहरण के लिए यह फ़ंक्शन "सैली" लेगा, इसे "सैली" में बदल देगा और फिर "सैली" को फर्स्टनाम टेक्स्टबॉक्स में डाल देगा।
- फ़ाइल को नीचे खींचकर इस नए कोड को सहेजें मेनू और सहेजें . का चयन करना ।
- नए कोड का परीक्षण करें। Microsoft Access डिज़ाइन मोड स्क्रीन पर वापस जाएँ। दृश्य को प्रपत्र दृश्य में बदलें।
- खाली रिकॉर्ड पर नेविगेट करें। FirstName फ़ील्ड पर क्लिक करें और सभी छोटे अक्षरों में नाम टाइप करें:
- टैब दबाएं अगले टेक्स्टबॉक्स में जाने के लिए कुंजी। जो का नाम बदलकर "जो" कर दिया जाना चाहिए जैसा कि नीचे दिखाया गया है:
- यदि आपको कोई त्रुटि प्राप्त होती है, तो VBA कोड संपादक पर वापस जाएँ और सुनिश्चित करें कि आपने कोड के सभी भागों की वर्तनी ठीक से लिखी है। आपको रन . को नीचे खींचने की आवश्यकता हो सकती है मेनू और रीसेट करें . चुनें VBA कोड को चलने से रोकने के लिए।
उपरोक्त उदाहरण ने एक त्वरित रूप प्रदान किया कि कैसे उपयोगकर्ता को डेटाबेस में अच्छी तरह से स्वरूपित डेटा दर्ज करने में मदद करने के लिए किसी प्रपत्र के व्यवहार को अनुकूलित किया जा सकता है। इस उदाहरण के दौरान कई विवरणों को छोड़ दिया गया था और उन विवरणों पर इस ट्यूटोरियल के शेष भाग में चर्चा की जाएगी।
VBA भाषा
यह खंड संक्षेप में वीबीए भाषा के मुख्य भागों का परिचय देता है क्योंकि इसका उपयोग एमएस एक्सेस में किया जाता है। VBA का व्यापक अवलोकन इस ट्यूटोरियल के दायरे से बाहर है। इस ट्यूटोरियल के अंत में अधिक व्यापक पुस्तकों और सामग्रियों के संदर्भ दिए गए हैं।
चर घोषित करना
एक चर एक प्लेसहोल्डर को दिया गया नाम है जहां प्रोग्रामर कुछ डेटा स्टोर कर सकता है। उदाहरण के लिए, एक चर का उपयोग किसी संख्या को संग्रहीत करने के लिए किया जा सकता है जब हम उस पर कुछ गणित संचालन करते हैं या इसके मूल्य की तुलना अन्य चर से करते हैं। चर को एक विशिष्ट डेटा प्रकार . के मान रखने के लिए घोषित किया जा सकता है जैसे कि पूर्णांक, तार या तिथियाँ। एक नया वैरिएबल घोषित करने के लिए, डिम स्टेटमेंट का उपयोग करें। उदाहरण के लिए, MyName . नामक एक नया वैरिएबल घोषित करने के लिए और इसे एक स्ट्रिंग (अक्षर) रखने के लिए सेट करें, निम्न कार्य करें:
स्ट्रिंग के रूप में मंद strMyName
"AccountBalance" नाम का एक नया वेरिएबल घोषित करने के लिए और इसे दशमलव के साथ एक नंबर स्टोर करने के लिए सेट करने के लिए, निम्नलिखित का उपयोग करें:
मंद dblAccountबैलेंस डबल के रूप में
मान असाइन करना
बराबर चिह्न का उपयोग करके एक मान को एक चर या प्रपत्र पर नियंत्रण के लिए असाइन किया जा सकता है। उदाहरण के लिए, MyName वेरिएबल में "एलेक्स" नाम को स्टोर करने के लिए निम्नलिखित का उपयोग करें:
strMyName ="एलेक्स"
फर्स्टनाम टेक्स्टबॉक्स की सामग्री को MyName वैरिएबल में कॉपी करने के लिए, उपयोग करें:
strMyName =[प्रथमनाम]
असाइन किए जाने से पहले मानों की गणना भी की जा सकती है। उदाहरण के लिए, निम्नलिखित अभिव्यक्ति वर्तमान ग्राहक के खाते की शेष राशि को [बैलेंस] टेक्स्टबॉक्स बनाती है, 1% ब्याज जोड़ती है (शेष राशि 1.01 गुणा करके) और फिर परिणाम को $ 10 से कम कर देती है। अंत में, परिणाम AccountBalance वैरिएबल को असाइन किया जाता है।
dblAccountBalance =( [बैलेंस] * 1.01 ) - 10.00
सशर्त विवरण
एक सशर्त कथन यह निर्धारित करने के लिए तार्किक परीक्षण का उपयोग करता है कि कोड की कौन सी पंक्तियाँ आगे चलनी हैं। यदि ... तब सशर्त कथन का उपयोग अक्सर किया जाता है। उदाहरण के लिए:
If AccountBalance < 1000 Then MonthlyFee = 10 Else MonthlyFee = 0 End If
तार्किक व्यंजक AccountBalance <1000 का मूल्यांकन किया जाता है। यदि यह अभिव्यक्ति सत्य है (उदाहरण के लिए यदि AccountBalance $400 है) तो उसके बाद की अगली पंक्ति चलाई जाती है। इस उदाहरण में, मासिक शुल्क =10.
अगर यह एक्सप्रेशन गलत है, तो एल्स के बाद की लाइन चलाई जाती है।
तार्किक अभिव्यक्ति में कई भाग शामिल हो सकते हैं जो बूलियन ऑपरेटरों द्वारा जुड़े हुए हैं या, और और नहीं। इस प्रोग्रामिंग ट्यूटोरियल पर बूलियन एक्सप्रेशंस की अधिक गहन चर्चा पाई जा सकती है। उदाहरण के लिए, मान लें कि यदि खाता एक वर्ष से कम पुराना है तो हम मासिक शुल्क माफ कर देते हैं। मान लें कि महीनों में खाते की आयु के रूप में हमारे पास AccountAge है। तब कोड होगा:
If AccountBalance < 1000 AND AccountAge > 12 Then MonthlyFee = 10 Else MonthlyFee = 0 End If
कोड की एक से अधिक लाइन को if…फिर स्टेटमेंट और if… में चलाया जा सकता है, फिर स्टेटमेंट को एक दूसरे के अंदर नेस्ट किया जा सकता है।
टिप्पणियां
किसी भी प्रोग्रामिंग भाषा में प्रोग्रामिंग करते समय, कोड का वर्णन करने वाली टिप्पणियों को शामिल करना अच्छा अभ्यास है। वीबीए में एक एकल उद्धरण से शुरू करके एक टिप्पणी शामिल की जा सकती है। उपरोक्त को एक उदाहरण के रूप में लेते हुए, हम निम्नलिखित टिप्पणियाँ जोड़ सकते हैं:
अगले पृष्ठ पर VBA भाषा के अधिक भागों पर चर्चा की गई है।
VBA भाषा - जारी है
कार्य
VBA भाषा में बड़ी संख्या में बिल्ट-इन फ़ंक्शंस और तरीके हैं जिनका उपयोग विभिन्न कार्यों जैसे कि गणित के कार्यों (sin, cos, tan), स्ट्रिंग फ़ंक्शंस और कई अन्य कार्यों को करने के लिए किया जा सकता है। फ़ंक्शंस में आमतौर पर एक या अधिक इनपुट पैरामीटर होते हैं जो फ़ंक्शन द्वारा उपयोग किए जाते हैं। उदाहरण के लिए, फ़ंक्शन Cos(45) में "45" इनपुट कोण है जिस पर कोसाइन फ़ंक्शन संचालित होगा। StrConv फ़ंक्शन के लिए दो इनपुट पैरामीटर की आवश्यकता होती है:कनवर्ट करने के लिए स्ट्रिंग और रूपांतरण शैली:
StrConv(FirstName, vbProperCase)
कुछ आसान कार्यों में शामिल हैं:
MsgBox(प्रॉम्प्ट, बटन्स, टाइटल) | शीघ्र पाठ, बटन और शीर्षक के साथ एक पॉप अप संदेश बॉक्स प्रदर्शित करें |
StrConv(अभिव्यक्ति, शैली) | स्ट्रिंग एक्सप्रेशन को अपरकेस, लोअरकेस या उचित केस में बदलें |
बाएं (अभिव्यक्ति, वर्ण) | स्ट्रिंग एक्सप्रेशन से सबसे बाएं वर्ण लें |
मध्य (अभिव्यक्ति, प्रारंभ, वर्ण) | शुरू से शुरू होने वाले स्ट्रिंग एक्सप्रेशन से वर्णों का मध्य सेट लें |
IsNull(अभिव्यक्ति) | जांचें कि क्या स्ट्रिंग एक्सप्रेशन (या टेक्स्ट बॉक्स) में कोई सामग्री नहीं है (शून्य है) |
Nz(अभिव्यक्ति, value_if_null ) | यदि व्यंजक शून्य है, तो एक डिफ़ॉल्ट मान भरें |
अब() | वर्तमान दिनांक और समय लौटाता है |
गोल (अभिव्यक्ति, दशमलव) | संख्यात्मक व्यंजक को दशमलव स्थानों की कुछ संख्या में गोल करता है |
RGB (लाल, हरा, नीला) | लाल, हरे और नीले रंग के संयोजन के आधार पर रंग पूर्णांक देता है |
तरीके
VBA में मेथड्स फंक्शन की तरह होते हैं लेकिन वे किसी फॉर्म या रिपोर्ट पर कंट्रोल या अन्य ऑब्जेक्ट से जुड़े होते हैं।
कुछ आसान तरीकों में शामिल हैं:
DoCmd.CancelEvent | उस वर्तमान ईवेंट को रद्द करता है जिसे संभाला जा रहा है |
DoCmd.बंद करें | वर्तमान फॉर्म (या डेटाबेस) को बंद करें |
DoCmd.OpenForm | नया फ़ॉर्म खोलता है |
DoCmd.OpenReport | नए या अपडेट किए गए डेटा को सहेजना, किसी परिवर्तन को पूर्ववत करना, या किसी फ़ॉर्म से बाहर निकलना जैसे MS Access कमांड चलाएँ |
.सेटफोकस | फ़ॉर्म पर नियंत्रण पर फ़ोकस सेट करें |
। पूर्ववत करें | नवीनतम परिवर्तन या आदेश को पूर्ववत करें |
.ताज़ा करें | फ़ॉर्म में निहित सभी डेटा को अपडेट करता है |
.आवश्यकता | फ़ॉर्म में दिए गए डेटा की मांग करता है |
। फिर से रंगना | सभी नियंत्रणों को फ़ॉर्म पर फिर से रंगना |
इस Microsoft साइट पर कई और कार्य और विधियाँ सूचीबद्ध हैं।
निम्नलिखित उदाहरण विभिन्न संयोजनों में विभिन्न कार्यों और विधियों का उपयोग करते हैं।
उदाहरण
यदि खाते की शेष राशि $1,000 से कम है तो उपयोगकर्ता को एक चेतावनी दिखाएं
If AccountBalance < 1000 Then MsgBox("Warning: The Account Balance is now less than $1,000.") End If
अगर फॉर्म पर फर्स्टनाम टेक्स्टबॉक्स में कुछ है, तो इसे उचित केस में बदलें
If Not IsNull( [FirstName] ) Then FirstName = StrConv( [FirstName], vbProperCase ) End If
अगला पृष्ठ विभिन्न वस्तुओं के गुणों का परिचय देता है।
गुण
डेटा एंट्री फॉर्म या रिपोर्ट के प्रत्येक तत्व में गुणों . का एक सेट होता है इसके साथ जुड़ा हुआ है। गुण प्रत्येक नियंत्रण के प्लेसमेंट, रंग, फ़ॉन्ट, पृष्ठभूमि और अन्य उपस्थिति और स्वरूपण विशेषताओं को नियंत्रित करते हैं। उदाहरण के लिए, टेक्स्टबॉक्स के कई गुणों में शामिल हैं:
दृश्यमान | निर्धारित करता है कि फ़ॉर्म पर टेक्स्ट बॉक्स दिखाई दे रहा है या नहीं |
लॉक किया गया | यह निर्धारित करता है कि टेक्स्ट बॉक्स में डेटा बदला जा सकता है या नहीं |
टैब अनुक्रमणिका | टैब दबाकर उपयोगकर्ता द्वारा फ़ॉर्म को नेविगेट करने पर प्रत्येक नियंत्रण का क्रम |
लेबल | टेक्स्ट बॉक्स से जुड़े लेबल के नाम की पहचान करता है |
चौड़ाई, ऊंचाई, ऊपर और नीचे की स्थिति | टेक्स्ट बॉक्स की सापेक्ष स्थिति और आकार को दर्शाता है |
पृष्ठभूमि शैली और रंग | टेक्स्ट बॉक्स की पृष्ठभूमि शैली और रंग सेट करता है |
सीमा शैली और रंग | टेक्स्ट बॉक्स के चारों ओर बॉर्डर की शैली और रंग सेट करता है |
फ़ॉन्ट आकार, वज़न, रेखांकन, इटैलिक, रंग और संरेखण | फ़ॉन्ट और शैली सेट करता है |
मार्जिन और पैडिंग स्पेसिंग - टेक्स्ट बॉक्स के अंदर मार्जिन और पैडिंग सेट करता है |
डिज़ाइन दृश्य का उपयोग करके गुण सेट किए जा सकते हैं और प्रपत्र या रिपोर्ट के साथ सहेजे जा सकते हैं। प्रपत्र चल रहा है के रूप में गुण भी VBA कोड का उपयोग कर बदला जा सकता है। वीबीए में किसी संपत्ति तक पहुंचने के लिए, नियंत्रण का नाम, फिर एक अवधि, और फिर संपत्ति का नाम उपयोग करें। उदाहरण के लिए, निम्न कोड CustomerID टेक्स्ट बॉक्स के फ़ॉन्ट रंग को लाल रंग में बदल देता है:
CustomerID.ForeColor =vbRed
अनुसरण करने वाले अनुभाग कुछ अभ्यास प्रदान करते हैं जो विभिन्न डेटा प्रविष्टि प्रपत्रों के व्यवहार को अनुकूलित करने के लिए VBA प्रोग्रामिंग भाषा के विभिन्न भागों को मिलाते हैं।
VBA कोड अभ्यास
प्रपत्रों को अनुकूलित करने वाले निम्नलिखित अभ्यासों का प्रयास करें। कोड के उदाहरणों के लिए पिछले अनुभागों को देखें जिन्हें वर्तमान अभ्यास में फिट करने के लिए अनुकूलित किया जा सकता है।
व्यायाम 1
दो आफ्टरअपडेट इवेंट हैंडलर जोड़ने के लिए CustomerDataEntry फॉर्म को संशोधित करें जो पहले नाम और अंतिम नाम को उचित मामले में बदल देगा (प्रत्येक टेक्स्टबॉक्स के लिए एक अलग आफ्टरअपडेट हैंडलर बनाएं)। पाठ को रूपांतरित करने का प्रयास करने से पहले यह सुनिश्चित करने के लिए कोड लिखें कि टेक्स्टबॉक्स रिक्त नहीं है।
व्यायाम 2
एक आफ्टरअपडेट ईवेंट हैंडलर जोड़ने के लिए AccountsDataEntry फॉर्म को संशोधित करें जो एक चेतावनी संदेश बॉक्स प्रदर्शित करेगा यदि खाता शेष $5,000 से कम है। बैलेंस टेक्स्ट बॉक्स का फ़ॉन्ट रंग भी लाल करें।
व्यायाम 3
ग्राहक डाटा एंट्री फॉर्म को संशोधित करें। एक ऑन लॉस्ट फोकस सबरूटीन बनाएं जो फर्स्टनाम टेक्स्टबॉक्स लाल (vbRed) के लिए लेबल को बदल देता है यदि उपयोगकर्ता कुछ भी टाइप किए बिना फर्स्टनाम टेक्स्टबॉक्स छोड़ देता है। यदि टेक्स्टबॉक्स में कुछ है तो लेबल को नीले (vbBlue) पर सेट करें। नीचे दिए गए उदाहरण में फर्स्टनाम टेक्स्टबॉक्स में कुछ भी टाइप नहीं किया गया था और फिर उपयोगकर्ता ने अगले टेक्स्टबॉक्स में टैब किया, जिससे फर्स्टनाम लेबल लाल हो गया।
इस ट्यूटोरियल का अगला पृष्ठ चर्चा करता है कि वीबीए कोड में त्रुटियों को कैसे संभालना है।
VBA में त्रुटियों को संभालना
कभी-कभी वीबीए कोड एक त्रुटि में चलेगा। उदाहरण के लिए, यदि कोई टेक्स्ट बॉक्स खाली है और हम टेक्स्ट बॉक्स की सामग्री को उचित स्थिति में बदलने का प्रयास करते हैं, तो StrCnv फ़ंक्शन विफल हो जाएगा। एक और उदाहरण है जब शून्य से विभाजन होता है। त्रुटि प्रबंधन के बिना, इन समस्याओं के कारण VBA प्रोग्राम क्रैश हो सकता है। जब कोई त्रुटि होती है, तो त्रुटि को संभालने और VBA कोड को संसाधित करना जारी रखने के लिए विशेष कोड कार्रवाई में आ सकता है।
वीबीए की दो मुख्य त्रुटि प्रबंधन विशेषताएं ऑन एरर गोटो स्टेटमेंट और रिज्यूमे नेक्स्ट स्टेटमेंट हैं। ये दो VBA कोड स्टेटमेंट VBA को एप्लिकेशन को क्रैश होने से बचाने के लिए एक साथ काम करते हैं।
ऑन एरर गोटो स्टेटमेंट वीबीए को सूचित करता है कि सबरूटीन में त्रुटि होने पर क्या करना चाहिए। बयान का गोटो भाग कोड में कहीं और एक लेबल का संदर्भ देता है जहां वीबीए काम करना जारी रखेगा। एक बार जब वीबीए प्रोग्राम लेबल पर पहुंच जाता है, तो एरर नामक ऑब्जेक्ट में कोई भी त्रुटि दिखाई देगी। संपत्ति Err.Description में सामने आई नवीनतम त्रुटि का पाठ विवरण होगा। रिज्यूमे नेक्स्ट स्टेटमेंट त्रुटि होने के बाद VBA प्रोग्राम को बिंदु से चालू रखने का कारण बनेगा।
निम्नलिखित उदाहरण इस ट्यूटोरियल की शुरुआत में पेश किए गए FirstName_AfterUpdate रूटीन पर विस्तृत है। अब VBA प्रोग्राम प्रोग्राम में होने वाली किसी भी त्रुटि को संभाल सकता है।
Private Sub FirstName_AfterUpdate ' Subroutine to convert the FirstName of the customer to Proper Case On Error Goto FirstName_AfterUpdate_Error_Handler FirstName = StrConv(FirstName, vbProperCase) ' If the conversion was successful, exit this subroutine Exit Sub FirstName_AfterUpdate_Error_Handler: ' If there is an error show the description of the error MsgBox Err.Description ' Resume with the next statement In the subroutine Resume Next End Sub
इस ट्यूटोरियल का अगला भाग चर्चा करता है कि VBA में SQL कोड को कैसे शामिल किया जाए।
VBA में कस्टम SQL क्वेरी चलाना
स्ट्रक्चर्ड क्वेरी लैंग्वेज (एसक्यूएल) प्रोग्रामिंग भाषा है जिसका उपयोग रिलेशनल डेटाबेस जैसे एमएस एक्सेस, एसक्यूएल सर्वर, ओरेकल और कई अन्य में किया जाता है। SQL कथनों का उपयोग तालिकाओं (कई अन्य क्षमताओं के बीच) से डेटा रिकॉर्ड सम्मिलित करने, अद्यतन करने, हटाने और पुनर्प्राप्त करने (चयन) करने के लिए किया जा सकता है। SQL कथन का एक सरल उदाहरण होगा:
SELECT customerid, firstname, lastname FROM customer
SQL कोड VBA में लिखा जा सकता है और उचित समय पर चलाया जा सकता है। उदाहरण के लिए, उच्चतम CustomerID खोजने के लिए ग्राहक तालिका को क्वेरी करने के लिए एक VBA सबरूटीन लिखा जा सकता है। फिर हम एक नए रिकॉर्ड के लिए एक नया, अप्रयुक्त, CustomerID प्राप्त करने के लिए इस संख्या में 1 जोड़ सकते हैं।
इस प्रकार के कार्य को करने के सामान्य चरण हैं:
SQL कथन बनाएँ
खुले डेटाबेस कनेक्शन (VBA में CurrentDb नाम) का उपयोग करके SQL कथन चलाएँ
परिणामी रिकॉर्ड पुनर्प्राप्त करें और पुनर्प्राप्त किए गए डेटा का उपयोग करें
इस VBA सबरूटीन को बनाने के लिए, CustomerDataEntry प्रपत्र खोलें और CustomerID फ़ील्ड के गुण प्राप्त करें। इवेंट टैब के तहत, ऑन डीबीएल क्लिक इवेंट के दाईं ओर तीन बिंदुओं पर क्लिक करें। कोड निर्माता चुनें और स्टब इस प्रकार बनाया जाएगा:
Private Sub CustomerID_DblClick(Cancel As Integer) End Sub
निम्नलिखित कोड जोड़ें:
Private Sub CustomerID_DblClick(Cancel As Integer) ' Create a new CustomerID when user double-clicks in the CustomerID field On Error GoTo ErrorHandler Dim rstResults As Recordset ' This will hold the set of result records Dim strSQL As String ' This variable will hold the text of the SQL Statement ' If there is nothing in the CustomerID text box If IsNull(CustomerID) Then ' Make the SQL statement strSQL = "SELECT MAX(customerid) + 1 AS NewID FROM customer" ' Run the SQL query against the current database Set rstResults = CurrentDb.OpenRecordset(strSQL) ' If at least 1 record is returned If rstResults.EOF = False Then ' Assign the NewID to the CustomerID field CustomerID = rstResults!NewID End If rstResults.Close ' Close up the result set Set rstResults = Nothing ' Empty out the result set End If Exit Sub ErrorHandler: Set rstResults = Nothing End Sub
एक बार यह सब ठीक हो जाने पर कोड निम्न जैसा दिखेगा:
फ़ाइल सहेजें और फिर CustomerDataEntry प्रपत्र देखें। एक नए रिकॉर्ड पर नेविगेट करें और फिर CustomerID फ़ील्ड में डबल-क्लिक करें। एक नया CustomerID अपने आप बन जाना चाहिए।