माइक्रोसॉफ्ट एक्सेस में टेक्स्ट या एक्सेल को डेटा स्रोतों के रूप में खोलना या लिंक करना
कई डेटा स्रोतों के साथ काम करने के लिए एक्सेस एक अभूतपूर्व उपकरण है। आप लंबे समय से जानते होंगे कि आप प्रारूपों की एक विस्तृत श्रृंखला में डेटा को आसानी से आयात या निर्यात कर सकते हैं। हालाँकि, हमारे पास एक ऐसा परिदृश्य था जहाँ हमें बाहरी डेटा स्रोतों से डेटा संसाधित करने की आवश्यकता थी। प्रसंस्करण बार-बार चलता है इसलिए डेटा आयात करने से फ्रंट-एंड फ़ाइल जल्दी से फूल जाएगी। इसके अलावा, इस स्थिति में, सूजन से बचने के लिए अस्थायी डेटाबेस के रूप में एक्सेस फ़ाइल की दूसरी प्रति बनाना एक व्यवहार्य विकल्प नहीं था। हमारे पास क्या विकल्प थे? यहीं पर हमने गैर-संबंधपरक डेटा स्रोतों को खोलने या लिंक करने के संबंध में जानकारी की कमी देखी। तो, आइए इस विषय पर गहराई से विचार करें।
इस ब्लॉग श्रृंखला का उद्देश्य एक्सेस एप्लिकेशन में डेटा स्रोत के रूप में टेक्स्ट या एक्सेल को खोलने या लिंक करने पर माइक्रोसॉफ्ट के दस्तावेज़ीकरण में अंतर को भरना है। Connectionstrings.com और अन्य साइटें कुछ ब्रेडक्रंब प्रदान करती हैं। आप आमतौर पर एक्सेस 'विज़ार्ड का उपयोग करके और उसके बाद वस्तुओं की जांच करके कुछ व्यवहार की खोज कर सकते हैं। हालांकि, सेकेंडिंग-अनुमान बहुत उपयोगी नहीं है। इसलिए, लेखों की यह श्रृंखला इस बारे में चर्चा करेगी कि डेटा को आयात या निर्यात किए बिना डेटा स्रोतों के रूप में एक्सेल और टेक्स्ट फ़ाइलों का उपयोग कैसे करें।
कृपया ध्यान दें कि डैन हाट और जिम फर्ग्यूसन की मदद के बिना श्रृंखला संभव नहीं होगी, जिन्होंने माइक्रोसॉफ्ट जेट डेटाबेस इंजन प्रोग्रामर गाइड के सह-लेखक थे। भले ही किताब बहुत पहले प्रिंट से बाहर हो गई हो, लेकिन अगर आप डीएओ के साथ बहुत काम करते हैं तो यह अभी भी एक मूल्यवान किताब है।
पहुंच और गैर-संबंधपरक डेटा स्रोत
एक्सेस ने हमेशा एक संभावित डेटा स्रोत के रूप में इंडेक्सेड सीक्वेंशियल एक्सेस मेथड (ISAM) का उपयोग करने का समर्थन किया है, जो इसे गैर-संबंधपरक डेटा स्रोतों जैसे टेक्स्ट फ़ाइलों या एक्सेल स्प्रेडशीट और यहां तक कि अन्य फ़ाइल स्वरूपों जैसे एक्सचेंज, dBASE को आयात, लिंक या निर्यात करने में सक्षम बनाता है। या फॉक्सप्रो। डीएओ इसे संभव बनाता है क्योंकि इसमें आईएसएएम ड्राइवर हैं जो उन प्रारूपों के साथ काम कर सकते हैं। हालाँकि, मैं टेक्स्ट फ़ाइलों और एक्सेल स्प्रेडशीट पर ध्यान केंद्रित करने जा रहा हूँ क्योंकि वे अधिक सामान्य स्रोत हैं जहाँ हमें काम करने के लिए एक्सेस की आवश्यकता होती है। यदि आपने कभी भी एक्सेस के माध्यम से बाहरी डेटा टैब का उपयोग करके डेटा आयात किया है, तो यह जादुई लग सकता है लेकिन वास्तव में, एक्सेस की सभी सुविधाएं डीएओ के स्तर पर प्रोग्रामर के रूप में हमारे लिए उपलब्ध हैं।
तो चलिए भूल जाते हैं कि जादूगर मौजूद हैं। आइए रिबन पर चमकदार आइकन के बारे में भूल जाएं। आइए भूल जाते हैं कि लिंक्ड टेबल हैं। आइए डेटा स्रोतों के साथ काम करने के लिए केवल वीबीए कोड का उपयोग करें, पतली हवा से बाहर। क्या हम कर सकते हैं? बिल्कुल। सबसे पहले, हम डेटा स्रोत को जोड़ने और खोलने के बीच के अंतर को देखेंगे।
लिंकिंग बनाम ओपनिंग
शब्दावली में मदद करने के लिए, हमें लिंकिंग . के बीच अंतर करना होगा बनाम उद्घाटन . लिंकिंग का मतलब है कि हम एक लिंक्ड टेबल बनाते हैं जो अब एक एक्सेस "टेबल" है जिसका उपयोग हम किसी भी अन्य एक्सेस टेबल की तरह ही कर सकते हैं। जैसे, यह एक्सेस एप्लिकेशन के भीतर परिभाषित एक स्थायी वस्तु है। इसके विपरीत, ओपनिंग तब होती है जब हम डीएओ के OpenDatabase
. का उपयोग करके सीधे डेटा स्रोत तक पहुंचते हैं तरीका। इसकी प्रकृति से, डेटा स्रोत खोलना आमतौर पर वीबीए कोड के माध्यम से किया जाएगा जैसा कि आप जल्द ही देखेंगे।
नमूने और कोड सेट करना
क्योंकि श्रृंखला उन डेटा स्रोतों के साथ एक्सेस कैसे इंटरैक्ट करती है, इस बारे में बारीक-बारीक विवरणों को समझने के बारे में है, हम पहले यहां लिंक करने के बजाय खोलने पर ध्यान केंद्रित करेंगे। तो, हम एक्सेल स्प्रेडशीट कैसे खोलते हैं? निश्चित रूप से, यह डेटाबेस नहीं है? आइए शुरू करने के लिए एक न्यूनतम उदाहरण सेट करें। एक फोल्डर में, C:\Links
, हम एक एक्सेल स्प्रेडशीट और एक एक्सेस डेटाबेस फ़ाइल बनाएंगे, जिसका नाम Products.xlsx
होगा। और Sample.accdb
, क्रमशः:
Products.xlsx इस सामग्री के साथ केवल एक शीट वाली एक साधारण स्प्रेडशीट है:
इसके साथ, आइए VBA कोड को Sample.accdb
. में जोड़ें . एक मानक मॉड्यूल में:
Public Sub OpenExcel() Dim db As DAO.Database Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx") Dim tdf As DAO.TableDef For Each tdf In db.TableDefs Debug.Print tdf.Name Dim fld As DAO.Field For Each fld In tdf.Fields Debug.Print fld.Name, Next Debug.Print Dim rs As DAO.Recordset Set rs = tdf.OpenRecordset Do Until rs.EOF For Each fld In rs.Fields Debug.Print fld.Value, Next Debug.Print rs.MoveNext Loop Next End Sub
यदि हम कोड चलाते हैं, तो हमें अपनी तत्काल विंडो में निम्न आउटपुट प्राप्त करना चाहिए:
Products Count Apples 3 Bananas 5 Figs 8
तो भले ही एक्सेल एक "डेटाबेस" नहीं है (और यदि आप एक्सेल को डेटाबेस के रूप में उपयोग कर रहे हैं, तो आप पर शर्म आती है), हम अभी भी दिखावा कर सकते हैं कि यह एक "डेटाबेस" है और इसके "टेबल" और "रिकॉर्ड्स" के माध्यम से पुनरावृत्त होता है। परिचित डीएओ वस्तुओं का उपयोग करना। इस कनेक्शन स्ट्रिंग से सारा जादू आता है:
Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx
लेकिन यह जादुई होना जरूरी नहीं है। श्रृंखला एक्सेल और टेक्स्ट फाइल ड्राइवरों के लिए कनेक्शन स्ट्रिंग्स के हिस्सों को विच्छेदित करेगी। तो चलिए ODBC कनेक्शन स्ट्रिंग की तुलना करके शुरू करते हैं जिससे आप शायद अधिक परिचित हैं।
डेटा स्रोत प्रकार
यदि आपने ODBC डेटा स्रोतों से लिंक किया है, तो आपने शायद ध्यान दिया होगा कि ODBC कनेक्शन स्ट्रिंग्स आमतौर पर कुछ इस तरह दिखती हैं:
ODBC;DRIVER=...;SERVER=...;DATABASE=...;
आश्चर्य है कि यह हमेशा ODBC
से क्यों शुरू होता है ? स्रोत के प्रकार की पहचान करने के लिए वह पहला भाग डीएओ का उपयोग करता है। हालाँकि, क्योंकि एक्सेल एक ODBC डेटाबेस नहीं है, हमें Excel 12.0 Xml
का उपयोग करना होगा। यह इंगित करने के लिए कि डीएओ को एक विशेष एक्सेल ड्राइवर का उपयोग करने की आवश्यकता है। शेष कनेक्शन स्ट्रिंग सिंटैक्स तब प्रभावित होता है कि हम कनेक्शन स्ट्रिंग के पहले भाग में किस ड्राइवर का उपयोग कर रहे हैं।
यहां संभावित डेटा स्रोत प्रकारों की आंशिक सूची दी गई है जिन्हें MS Access पहचान लेगा:
Excel 8.0
:97-2003 xls फ़ाइलेंExcel 12.0
:xlsb फ़ाइलेंExcel 12.0 Xml
:xlsx फ़ाइलेंText
:कोई भी टेक्स्ट फ़ाइल
शेयरपॉइंट, एक्सचेंज या फॉक्सप्रो सहित और भी डेटा स्रोत हैं, लेकिन मैं उन्हें कवर नहीं करने जा रहा हूं। फिर भी, यह दर्शाता है कि एक्सेस डेटाबेस की तरह उन स्रोतों के साथ काम करने में सक्षम है और यह हमें सामग्री को पढ़ने के लिए डीएओ का उपयोग करने में सक्षम बनाता है। ध्यान दें कि जब हम गैर-संबंधपरक डेटा स्रोतों का उपयोग करते हैं, तो सभी संचालन पूरी तरह से समर्थित नहीं हो सकते हैं। उदाहरण के लिए, आपको एक मौजूदा पंक्ति को संपादित करने की अनुमति नहीं दी जा सकती है, भले ही आप एक पंक्ति सम्मिलित कर सकते हैं।
हालांकि, किसी डेटा स्रोत को खोलने या लिंक करने के साथ एक चुनौती का मतलब है कि आप केवल डेटा को आयात नहीं कर सकते हैं, फिर अपनी आवश्यकताओं के अनुरूप स्कीमा को संपादित कर सकते हैं। इसलिए, आप पा सकते हैं कि लिंक करते समय आपको मिलने वाला डिफ़ॉल्ट स्कीमा वह नहीं होगा जो आप चाहते हैं। उस कारण से, कनेक्शन स्ट्रिंग की गहन समझ महत्वपूर्ण होगी। इसलिए, आप अगले कुछ लेखों में एक्सेल और टेक्स्ट फाइलों दोनों के लिए कनेक्शन स्ट्रिंग्स के विवरण के बारे में अधिक जानेंगे।
निष्कर्ष
आपने देखा कि बाहरी डेटा आयात करने के विकल्प के रूप में, हम DAO का उपयोग करके किसी बाहरी डेटा स्रोत को लिंक करना या खोलना भी चुन सकते हैं। बाहरी डेटा स्रोत को जोड़ने या खोलने की क्षमता का बहुत कम उपयोग किया जाता है। हालांकि, लिंक करने या खोलने की क्षमता को छूट नहीं दी जानी चाहिए क्योंकि इससे नए परिदृश्य खुल सकते हैं जैसे कि आयात के प्रभाव के रूप में सूजन से बचना, विशेष रूप से बंद वातावरण में। अगले लेख में, मैं एक वैध कनेक्शन स्ट्रिंग के निर्माण के लिए एक्सेल ड्राइवर द्वारा उपयोग किए जाने वाले विभिन्न मापदंडों पर चर्चा करूंगा। निम्नलिखित लेखों में, मैं टेक्स्ट फ़ाइल ड्राइवर और कनेक्शन पैरामीटर को देखूंगा। अंतिम लेख में, हम यह सब एक साथ रखेंगे।