Microsoft Access में डेटा जोड़ने/संपादित करने के लिए SQL दृश्यों का उपयोग करना
यह मेरे द्वारा लिखे गए विचारों पर दो भाग श्रृंखला का भाग II है, आप भाग I को यहां देख सकते हैं।
पिछले कुछ वर्षों में मुझे एक्सेस डेटाबेस पर काम करने का एक बड़ा अनुभव मिला है जिसमें डेटा SQL सर्वर में संग्रहीत तालिकाओं से जुड़ा हुआ है। रिलेशनल डेटाबेस और लुकअप टेबल के साथ आप आसानी से एक ऐसे दृश्य के साथ समाप्त हो सकते हैं जिसमें कई संख्यात्मक कॉलम होते हैं जो अन्य तालिकाओं से प्राथमिक कुंजी रखते हैं।
उदाहरण के लिए कहें कि आपके पास दो तालिकाओं वाला एक डेटाबेस है:एक कंपनी की जानकारी के लिए और दूसरा केवल संपर्कों के लिए, लेकिन आपको अपने संपर्कों को कंपनियों से जोड़ने की आवश्यकता है और आपके पास ऐसी स्थितियां हैं जहां एक संपर्क कई कंपनियों से जुड़ा हुआ है। आप CompanyContacts की तीसरी तालिका बनाकर इसे आसानी से प्रबंधित कर सकते हैं जो CompanyID और ContactID युक्त डेटा की पंक्तियाँ होंगी। ऐसी कई स्थितियां हैं जहां आपके पास एक समान तालिका होगी जो डेटा को एक तालिका से दूसरी तालिका में जोड़ रही है, लेकिन इन तालिकाओं को बनाए रखने और प्रबंधित करने की आवश्यकता है, जिन्हें वास्तव में अंतर्निहित डेटा देखने की आवश्यकता है, न कि केवल आईडी की। समस्या को हल करने के लिए आप सभी आवश्यक तालिकाओं के साथ एक दृश्य बना सकते हैं और लिंक किए गए दृश्य पर अपना फ़ॉर्म बना सकते हैं, लेकिन आप तुरंत देखेंगे कि आप किसी भी डेटा को संपादित नहीं कर सकते, यह सब केवल पढ़ने के लिए है।
आपके दृश्य को संपादन योग्य बनाने की युक्तियां
एक्सेस में अपने दृश्य को संपादित करने के लिए आपको यह सुनिश्चित करना होगा कि टाइम स्टैम्प फ़ील्ड और इंडेक्स के साथ-साथ उस तालिका से प्राथमिक कुंजी है जिसे आप संपादित करना चाहते हैं। SQL सर्वर में आपके व्यू डिज़ाइन में फ़ील्ड जोड़कर पहले दो को आसानी से पूरा किया जा सकता है, बाद के लिए नीचे दिखाए गए अनुसार UNIQUE INDEX का उपयोग करें, साथ ही लिंक की गई तालिका के रूप में अपना दृश्य जोड़ने के लिए कोड के साथ:
मंद tdf as DAO.TableDef
Dim db as DAO.Databaseसेट db =CurrentDb
सेट tdf =db.CreateTableDef
tdf.Name ="ViewNameInAccess"
tdf.SourceTableName ="dbo.ViewName "
tdf.Connect ="ODBC;"
db.TableDefs.Append tdfdb.Execute "अद्वितीय इंडेक्स बनाएं [प्राथमिक] [ViewNameInAccess](MainTableID);", dbFailOnError
पर