सहेजे गए विनिर्देशों के लिए कनेक्शन स्ट्रिंग पैरामीटर
एक्सेस सिस्टम टेबल MSysIMEXSpecs
का उपयोग करके टेक्स्ट फ़ाइलों के स्कीमा का वर्णन करने का दूसरा तरीका प्रदान करता है। और MSysIMEXColumns
विनिर्देशों को बचाने के लिए। पिछले लेख में, मैंने बताया था कि कैसे schema.ini
टेक्स्ट फ़ाइल की संरचना का वर्णन करने के लिए इस्तेमाल किया जा सकता है। schema.ini
परोक्ष रूप से संदर्भित एक बाहरी पाठ फ़ाइल शामिल है, लेकिन सिस्टम तालिकाओं के साथ, हमारे पास कोई बाहरी निर्भरता नहीं है। कुछ ओवरलैप होने के बावजूद संरचना काफी अलग है।
MSysIMEXSpecs
और MSysIMEXColumns
सिस्टम टेबल
टेक्स्ट फ़ाइल के समान फ़ोल्डर में मौजूद होने के लिए बाहरी schema.ini पर निर्भर होने के बजाय, एक्सेस डेटाबेस के भीतर सहेजे गए विनिर्देश को संदर्भित करके किसी भी पथ में टेक्स्ट फ़ाइल के लिए विनिर्देश प्रदान करना संभव है। जब आप आयात या निर्यात विज़ार्ड का उपयोग करते हैं, तो आप Advanced
. के माध्यम से विनिर्देशों को सहेज या लोड कर सकते हैं बटन।
उन्नत बटन पर क्लिक करने के बाद विनिर्देश संवाद प्रदर्शित होगा। विनिर्देशों को लोड करने या सहेजने के अलावा, आप दिखाए गए संवाद का उपयोग करके विनिर्देशों को भी अनुकूलित कर सकते हैं।
जब भी कोई विनिर्देश सहेजा जाता है, तो यह MSysIMEXSpecs
. दोनों को लिखा जाता है और MSysIMEXColumns
सिस्टम टेबल। नई एक्सेस फ़ाइलों में तालिकाएँ मौजूद नहीं हैं और केवल पहली बार बनाई जाएंगी। इसके अलावा, आप उन तालिकाओं से डेटा संपादित या हटा भी सकते हैं। फिर भी, वे अभी भी सिस्टम टेबल हैं इसलिए वे डिफ़ॉल्ट रूप से छिपे हुए हैं। यदि आप उन्हें नेविगेशन फलक में देखना चाहते हैं, तो आपको नेविगेशन विकल्प पर जाना होगा और छिपे हुए और सिस्टम ऑब्जेक्ट दोनों के लिए दृश्यता को सक्षम करना होगा।
यदि आप डायलॉग पर उपलब्ध विकल्पों की तुलना schema.ini
. में मौजूद विकल्पों से करते हैं , आप कुछ उल्लेखनीय अंतर देख सकते हैं। एक उदाहरण के लिए, schema.ini
दिनांक या मुद्रा राशियों को कैसे स्वरूपित किया जा सकता है, इस संबंध में अधिक विकल्पों की अनुमति देता है। सहेजे गए विनिर्देशों के साथ, हम केवल संभावित प्रारूप की पूर्व निर्धारित सूची से दिनांक स्वरूपण को नियंत्रित कर सकते हैं। मुद्रा राशियों के लिए कोई प्रत्यक्ष विकल्प नहीं हैं क्योंकि हम डेटा प्रकार का उपयोग यह इंगित करने के लिए करते हैं कि स्वरूपण की परवाह किए बिना एक कॉलम को मुद्रा के रूप में आयात किया जाना चाहिए। इस प्रकार, schema.ini की तुलना में सिस्टम टेबल के विकल्प सरल हैं। हम आगे तालिकाओं की संरचना की समीक्षा करेंगे।
MSysIMEXSpecs
संरचना
तालिका सहेजे गए विनिर्देशों के एक सेट का प्रतिनिधित्व करती है। प्रत्येक पंक्ति के लिए, तालिका फ़ाइल के समग्र स्वरूप का वर्णन करती है, जो schema.ini
के दूसरे खंड के समान है। . हालांकि, अलग-अलग विकल्प हैं जिन पर विचार करने की आवश्यकता है।
DateDelim
:तिथियों के लिए सीमांकक की पहचान करता है। यह आमतौर पर/
होता है या-
. यह केवल एक या शून्य वर्ण का हो सकता है।DateFourDigitYear
:हाँ/नहीं फ़ील्ड यह दर्शाता है कि क्या दिनांक चार अंकों के साथ वर्षों के लिए स्वरूपित हैं। अगर हाँ पर सेट है, तो10/10/20
. जैसे मान मान्य तिथियां नहीं मानी जाएंगी।DateLeadingZeros
:एक और हां/नहीं फ़ील्ड इंगित करता है कि तिथियों में अग्रणी शून्य हैं या नहीं।DateOrder
:वह दिनांक स्वरूपण निर्धारित करता है जिसका हम उपयोग करना चाहते हैं। निम्नलिखित कोड मान्य हैं:0
:डीएमवाई1
:डीवाईएम
2
:एमडीवाई3
:एमवायडी
4
:वाईडीएम5
:वाईएमडी
DecimalPoint
:दशमलव संख्या के लिए पूर्णांक और भिन्नात्मक भाग को अलग करने के लिए वर्ण को इंगित करता है। यह केवल एक ही वर्ण होना चाहिए।FieldSeparator
:टेक्स्ट फ़ाइल में फ़ील्ड को अलग करता है। CSV फ़ाइल के लिए, यह,
होगा (एक अल्पविराम वर्ण)। साथ ही, यह केवल एक ही वर्ण का होना चाहिए।FileType
:schema.ini
. के समान काCharacterSet
. जैसा कि पिछले लेख में बताया गया है, आप अपने विंडोज मशीन पर समर्थित सभी संभावित कोड पृष्ठों का पता लगा सकते हैं, रजिस्ट्री कुंजी में देखेंComputer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\
. यह टेक्स्ट फ़ाइल के एन्कोडिंग की पहचान करता है। आप समान कोड पृष्ठ पहचानकर्ता का उपयोग कर सकते हैं। हालाँकि, एक समस्या है।FileType
एकInteger
. के रूप में परिभाषित किया गया है . इसलिए, एक कोड पेज 65000 (जैसे यूनिकोड) को -536 के रूप में रिपोर्ट किया जाएगा। 32767 से अधिक किसी भी कोड पृष्ठ पहचानकर्ता को परिवर्तित करने के लिए, आप सूत्रCInt("&H" & Hex(x))
का उपयोग कर सकते हैं और ऑपरेशन को उलटने के लिए,CLng("&H" & Hex(x))
. उदाहरण के लिए, कोड पेज 65000 को कनवर्ट करनाCInt("&H" & Hex(65000))
से होकर गुजरेगा उपज -536। रिवर्स करने के लिए,CLng("&H" & Hex(-536))
65000 फिर से पाने के लिए।SpecID
:टेबल के लिए ऑटोनंबर। ध्यान दें कि यह तालिका की प्राथमिक कुंजी नहीं है। इस कॉलम का उपयोगMSysIMEXColumns.SpecID
. के साथ किया जाता है रिकॉर्ड संबंधित करने के लिए। हालांकि, दो तालिकाओं के बीच कोई विदेशी कुंजी बाधा नहीं है, इसलिए अनाथ विलोपन हो सकता है।SpecName
:तालिका की प्राथमिक कुंजी। यह विशिष्ट रूप से विशिष्टता की पहचान करता है। जब भी आप कोई विनिर्देश सहेजते हैं, तो आपके द्वारा प्रदान किया गया नाम इस फ़ील्ड में दर्ज किया जाएगा। जब आप विज़ार्ड का उपयोग करके आयात या निर्यात करते हैं, तो एक्सेस स्वचालित रूप से एक नया विनिर्देश बना सकता है, भले ही आपनेAdvanced
का उपयोग न किया हो और स्पष्ट रूप से इसे सेव करें।SpecType
:यह या तो केवल1
हो सकता है सीमांकित फ़ाइल या2
को इंगित करने के लिए निश्चित-चौड़ाई वाली फ़ाइल को दर्शाने के लिए।StartRow
:आयात के लिए स्कैनिंग शुरू करने के लिए टेक्स्ट फ़ाइल पर पंक्ति निर्धारित करता है। यह कोई भी संख्या हो सकती है इसलिए फ़ाइल के शीर्ष पर कई पंक्तियों को छोड़ना संभव है। यह गैर-अनुरूपता वाले शीर्षलेख वाले गलत-निर्मित पाठ फ़ाइलों के लिए उपयोगी हो सकता है।TextDelim
:एक एकल वर्ण जो किसी पाठ मान को परिसीमित करता है। यदि टेक्स्ट सीमित नहीं है तो इसे छोड़ा जा सकता है। यदि आप टेक्स्ट फ़ाइलों के प्रारूप को नियंत्रित कर सकते हैं, तो आमतौर पर टेक्स्ट डिलीमीटर होना एक अच्छा विचार है। टेक्स्ट डिलीमीटर वाली टेक्स्ट फ़ाइल अच्छी तरह से बनी रहेगी, भले ही टेक्स्ट में टेक्स्ट के भीतर फ़ील्ड सेपरेटर (जैसे अल्पविराम) हों।TimeDelim
:समय के लिए उपयोग किए गए सीमांकक वर्ण को इंगित करता है। यह कोई एकल वर्ण हो सकता है या रिक्त हो सकता है और:
. के लिए डिफ़ॉल्ट हो सकता है (एक कोलन कैरेक्टर)।
MSysIMEXColumns
संरचना
तालिका टेक्स्ट फ़ाइल में अलग-अलग कॉलम और किसी भी विशेषता का वर्णन करती है। यह मोटे तौर पर schema.ini
. के तीसरे खंड से मेल खाता है . हालांकि, अनुक्रमण जैसे अतिरिक्त विकल्प हैं जो schema.ini
. में मौजूद नहीं हैं ।
Attributes
:अनजान। मेरे परीक्षणों में मुझे यह0
. के अलावा कुछ भी नहीं मिला . यदि आप जानते हैं कि यह किस लिए है और इसका उपयोग कैसे किया जा सकता है, तो बेझिझक एक टिप्पणी छोड़ दें।DataType
:कॉलम का डेटा प्रकार। संख्या DAO.DataTypeEnum के अनुरूप होनी चाहिए।FieldName
:कॉलम का नाम। ध्यान दें कि एक्सेस डिफ़ॉल्ट रूप सेFieldN
. होगा जहांN
एक धनात्मक पूर्णांक है।IndexType
:हो सकता है0
कोई सूचकांक नहीं दर्शाने के लिए,1
नियमित अनुक्रमणिका या2
indicate को इंगित करने के लिए अद्वितीय अनुक्रमणिका इंगित करने के लिए।SkipColumns
:एक बूलियन मान इंगित करता है कि क्या कॉलम को छोड़ दिया जाना चाहिए। अगर छोड़ दिया जाता है, तो यह पूछताछ या पढ़ने के लिए उपलब्ध नहीं होगा।SpecID
:MSysIMEXSpecs.SpecID
. के अनुरूप है वाहन नंबर। ध्यान दें कि दो तालिकाओं के बीच कोई विदेशी कुंजी बाधा नहीं है। यदि आपने रिकॉर्ड हटा दिए हैं, तोMSysIMEXSpecs
से अनाथ रिकॉर्ड हो सकते हैं टेबल.Start
:एक पूर्णांक यह दर्शाता है कि टेक्स्ट फ़ाइल पर कॉलम कब शुरू होता है। यह एक निश्चित चौड़ाई फ़ाइल के लिए महत्वपूर्ण है। सीमांकित फ़ाइलों के लिए, एक्सेस अभी भी पहली पंक्ति की कॉलम स्थिति का उपयोग करेगा जहां शुरुआत निर्धारित करने के लिए फ़ील्ड मिलती है। इसके अलावा, एक्सेस कॉलम के क्रमिक क्रम को दर्शाने के लिए कॉलम का उपयोग करेगा।Width
:कॉलम के आकार को नियंत्रित करने के लिए एक और पूर्णांक। एक निश्चित चौड़ाई फ़ाइल पर, यह भी महत्वपूर्ण है। ध्यान रखें कि Microsoft एक्सेस उस जानकारी का उपयोग चर लंबाई डेटा प्रकारों जैसे टेक्स्ट या बाइनरी के लिए कॉलम को एक सीमांकित फ़ाइल पर भी तदनुसार आकार देने के लिए करेगा।
विनिर्देशों का उपयोग कर कनेक्शन स्ट्रिंग:DSN
पैरामीटर
पिछले आलेख में, आपने देखा था कि किसी schema.ini फ़ाइल का उपयोग करने के लिए कनेक्शन स्ट्रिंग में कोई परिवर्तन नहीं किया गया था। हमने परोक्ष रूप से schema.ini
. का उल्लेख किया है बस यह सुनिश्चित करके कि यह उसी फ़ोल्डर में मौजूद है जहां हम जिस टेक्स्ट फ़ाइल को लिंक कर रहे हैं या खोल रहे हैं वह मौजूद है। हालाँकि, सिस्टम से सहेजे गए विनिर्देशों का उपयोग करने के लिए यह आवश्यक है कि हम कनेक्शन में जानकारी की आपूर्ति करें। हम DSN
. को पॉप्युलेट करके ऐसा करते हैं पैरामीटर। मान को सहेजे गए विनिर्देश के नाम को संदर्भित करना चाहिए, जैसा कि MSysIMEXSpecs.SpecName
में दर्ज किया गया है। कॉलम।
यहाँ एक नमूना है:
Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Text;DSN=Products Link Specification;IMEX=1;DATABASE=C:\Links")
एक्सेस की आवश्यकता होगी कि कनेक्शन स्ट्रिंग में डीएसएन पैरामीटर और आईएमईएक्स पैरामीटर दोनों की आपूर्ति की जाए। यदि आप IMEX
. को छोड़ने का प्रयास करते हैं पैरामीटर, आपको एक्सेस के बारे में एक त्रुटि मिलेगी कि वह विनिर्देश को खोजने में सक्षम नहीं है, भले ही विनिर्देश MSysIMEXSpecs
में मौजूद है। टेबल। इससे यह भी पता चलता है कि तालिका में SpecName
. के साथ एक रिकॉर्ड होना चाहिए DSN
. में दिए गए समान मान वाले पैरामीटर।
जैसा कि पहले के लेख में उल्लेख किया गया है, व्यक्तिगत पाठ फ़ाइलों को फ़ोल्डर के "डेटाबेस" के भीतर "तालिका" के रूप में माना जाता है। इसलिए हालांकि कनेक्शन स्ट्रिंग किसी विशिष्ट टेक्स्ट फ़ाइल को इंगित नहीं करती है, कनेक्शन स्ट्रिंग कनेक्शन के माध्यम से खोली गई किसी भी टेक्स्ट फ़ाइल पर निर्दिष्ट विनिर्देशों का उपयोग करेगी।
जबकि एक ही लेख में चर्चा किए गए अन्य मापदंडों का उपयोग करना संभव है, आपको पता होना चाहिए कि जब विरोध में, सहेजे गए विनिर्देश कनेक्शन स्ट्रिंग पर पूर्वता लेंगे। इस कारण से, टेक्स्ट फ़ाइल से सफलतापूर्वक कनेक्ट होने के लिए आवश्यक पैरामीटर के न्यूनतम सेट का उपयोग करना सबसे अच्छा है और सहेजे गए विनिर्देशों को टेक्स्ट फ़ाइल को पढ़ने के तरीके का वर्णन करने का काम करने दें।
निष्कर्ष
आपने बाहरी फ़ाइल का उपयोग किए बिना टेक्स्ट फ़ाइल की संरचना का वर्णन करने का एक वैकल्पिक तरीका सीखा। हमने देखा कि विनिर्देशों को स्टोर करने के लिए एक्सेस दो सिस्टम टेबल का उपयोग कैसे करता है। अंत में, आपने DSN
. का उपयोग करके सहेजे गए विनिर्देशों को निर्दिष्ट करना भी सीखा पैरामीटर। इस बिंदु पर, हमने एक्सेस में टेक्स्ट फ़ाइलों को लिंक करने या खोलने के बारे में जानने के लिए आवश्यक सभी चीजों को शामिल कर लिया है। अगले लेख में हम शेष श्रंखला में सीखी गई सभी जानकारियों को एक साथ रखेंगे। हम नो-कोड दृष्टिकोण के लिए एक्सेस क्वेरी में कनेक्शन स्ट्रिंग्स का उपयोग करने पर भी विचार करेंगे।