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

एमएस एक्सेस के लिए एड-हॉक कनेक्शन स्ट्रिंग्स और विषम प्रश्न

एमएस एक्सेस के लिए एड-हॉक कनेक्शन स्ट्रिंग्स और विषम क्वेरीज़

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

VBA कोड के बजाय विषम क्वेरी

आपने पिछले लेखों में डीएओ के OpenDatabase का उपयोग करके ऐसे डेटा स्रोत को खोलने का नमूना कोड देखा था। विधि।

Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx")

इससे आपको यह आभास हो सकता है कि डेटा स्रोत खोलने का एकमात्र तरीका कोड के माध्यम से है। लेकिन ऐसा होना जरूरी नहीं है! आप वास्तव में केवल एक्सेस क्वेरी का उपयोग करके एक मनमाना डेटा स्रोत खोल सकते हैं। यहां एक नमूना सिंटैक्स है जिसे आप एक्सेस क्वेरी में चला सकते हैं:

[Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx] से
SELECT * 
FROM [Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx].[Sheet1$];

सामान्यतया, कनेक्शन स्ट्रिंग जिसे आपने OpenDatabase . में डाला है का चौथा पैरामीटर वह है जिसके साथ आप "तालिका" उपसर्ग करेंगे। इसलिए सामान्य वाक्य-विन्यास होगा:

FROM [<complete connection string>].[<name of the table>]

आप OpenDatabase . का उपयोग कर सकते हैं TableDefs . पर विधि और पुनरावृति तालिका के मान्य नाम खोजने के लिए। फिर आप इसका उपयोग नाम के दूसरे भाग को भरने के लिए कर सकते हैं।

लिंक के बजाय क्यों खोलें?

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

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

INSERT INTO [Text;DATABASE=C:\Links\].[products.csv;] (Products, Count)
SELECT Products, Count
FROM [ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;].[vwProducts];

क्योंकि गंतव्य और स्रोत दोनों एक्सेस के स्रोत नहीं हैं, इसे हम "विषम क्वेरी" कहते हैं। ध्यान दें कि भले ही vwProducts एक लिंक की गई तालिका थी, यह अभी भी एक "विषम" क्वेरी होगी। ऐसा इसलिए है क्योंकि हम अभी भी अलग-अलग डेटा स्रोतों को एक ही क्वेरी में मिला रहे हैं।

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

तदर्थ कनेक्शन स्ट्रिंग का निर्माण

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

आप बाहरी टैब और या तो "आयात पाठ" या आयात एक्सेल" का उपयोग कर सकते हैं और लिंक विकल्प चुन सकते हैं। जैसा कि दिखाया गया है, यह आमतौर पर विज़ार्ड पर तीसरा विकल्प होता है।

विज़ार्ड के माध्यम से जाने और नई लिंक की गई तालिका को सहेजने के बाद, आप इस कोड के साथ वीबीए तत्काल विंडो के माध्यम से कनेक्शन स्ट्रिंग का निरीक्षण कर सकते हैं:

?CurrentDb.TableDefs("<name of linked table>").Connect

यह आपको कनेक्शन स्ट्रिंग बनाने के तरीके के बारे में संकेत प्रदान कर सकता है और फिर आप अनुकूलित कर सकते हैं। अधिकांश समय आप अपने आप को पथ या तालिका के नाम को अनुकूलित करते हुए पाएंगे, इसलिए यह आमतौर पर आपके विकास के दौरान एक तकनीक के रूप में पर्याप्त रूप से काम करता है। फिर आप तदनुसार एक विषम क्वेरी बना सकते हैं और लिंक की गई तालिका को हटा सकते हैं।

निष्कर्ष

श्रृंखला में, आपने लिंकिंग और ओपनिंग के बीच का अंतर सीखा। फिर आपने देखा कि कैसे एक्सेल और टेक्स्ट फाइलों का उपयोग किया जा सकता है जैसे कि वे एक DAO.Database . थे "टेबल" के साथ ऑब्जेक्ट। दूसरे लेख के साथ, आपने एक्सेल वर्कबुक के कनेक्शन पैरामीटर के बारे में सीखा। तीसरे लेख में, आपने टेक्स्ट फ़ाइल का वर्णन करने के लिए स्कीमा जानकारी रखने की आवश्यकता देखी। चौथे लेख में बताया गया है कि schema.ini . का उपयोग कैसे करें . 5वें लेख में, आपने देखा कि कैसे MSysIMEXSpecs और MSysIMEXColumns schema.ini . के विकल्प के रूप में इस्तेमाल किया जा सकता है विधि।

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

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वीबीए ऑब्जेक्ट ब्राउज़र में छिपे हुए आइटम कैसे दिखाएं

  2. एक्सेस 2019 में ऑनस्क्रीन टूल्स के साथ कैसे काम करें

  3. 'विंडोज 10 एस' के बारे में जानने योग्य 5 बातें

  4. माइक्रोसॉफ्ट एसक्यूएल सर्वर - एसक्यूएल शनिवार डलास में मुझसे जुड़ें

  5. क्लाउड कंप्यूटिंग से आपका छोटा व्यवसाय कैसे लाभ उठा सकता है