ms-access
एक्सेस क्रैश का निवारण कैसे करें
खोज…
परिचय
टिप्पणियों
परीक्षण करते समय समीकरण से अन्य चर निकालना सुनिश्चित करें
नेटवर्क भ्रष्टाचार
क्लाइंट को नेटवर्क से लोड न करें। इसे स्थानीय ड्राइव पर रखें और इसे वहां से चलाएं।
कॉर्पोरेट बनाता है
यदि आप एक कॉर्पोरेट वातावरण में हैं जो "कंप्यूटर बिल्ड" का उपयोग कर रहा है और उसे डिकंपाइलिंग, टेस्टिंग मेमोरी के साथ कोई सफलता नहीं मिली है, और न ही बाइनरी डेटा स्ट्रिप किया गया है - तब तक और परीक्षण करने से इंकार करें जब तक कि आईटी टीम उपयोगकर्ता को एक टेस्ट मशीन प्रदान कर सकती है केवल Windows, Office, और सर्विस पैक स्थापित हैं।
सभी सॉफ़्टवेयर और अपडेट बिना हाथ लगाए इंस्टॉल किए गए इंस्टॉलेशन का उपयोग करके स्थापित किए जाने चाहिए। परीक्षण के लिए इस मशीन पर एंटीवायरस स्थापित न करें।
यह समझें कि कई आईटी विभाग केवल बिल्ड के साथ एक-आकार-फिट्स-सभी दृष्टिकोण करने की कोशिश करते हैं, और उनके बिल्ड सभी एक दूसरे पर आधारित होते हैं। समय के साथ, सॉफ्टवेयर टकराव सीधे दुर्घटना का कारण बन सकता है या अजीब कार्य कर सकता है।
बुरी शक्ति
जैसा कि स्मृति उदाहरण में उल्लेख किया गया है - बिजली के उतार-चढ़ाव कंप्यूटर त्रुटियों का कारण बन सकते हैं। यदि डेटाबेस एक औद्योगिक भवन में है, तो अपने हाथों को एक पावर कंडीशनर या यूपीएस पर प्राप्त करने का प्रयास करें जो स्वच्छ शक्ति प्रदान करता है (बैटरी बंद, धातु-ऑक्साइड वर्डीस्टर से गुजरने वाले मुख्य बंद नहीं)
इसके अलावा, बिजली की आपूर्ति केबल की जांच करें जो पावर बार या आउटलेट में प्लग कर रहा है। सुनिश्चित करें कि गेज और वोल्टेज चश्मा पर्याप्त हैं। आईटी विभाग अक्सर स्टेशन पर प्लग किए गए पावर केबल छोड़ देते हैं और मशीन को हटा देते हैं। कई वर्षों के बाद, वे बीफ़ियर बिजली की आपूर्ति का उपयोग कर रहे हैं, लेकिन केबल को बंद नहीं किया है। इससे फर्क पड़ता है। संदेह होने पर, एक नया, मोटा केबल लाएं।
Decompile डेटाबेस
यह हमेशा आपका प्रारंभिक निर्धारण होना चाहिए। एक अच्छी नीति प्रत्येक रिलीज से पहले डेटाबेस को विघटित करना है।
एक विघटित शॉर्टकट बनाएँ । यह डेटाबेस को "/ डिकम्पाइल" स्विच के साथ लोड करता है।
- अपने डेटाबेस फ़ाइल पर राइट क्लिक करें। कॉपी का चयन करें
- एक्सप्लोरर विंडो में राइट क्लिक करें और "पेस्ट शॉर्टकट" चुनें
- शॉर्टकट पर राइट-क्लिक करें और "गुण" चुनें
- लक्ष्य बॉक्स में, पंक्ति के अंत में जाएं और
/decompileजोड़ें - शॉर्टकट को बंद करने के लिए ओके पर क्लिक करें
शिफ्ट के साथ डेटाबेस खोलें।
इस शॉर्टकट पर डबल क्लिक करते हुए शिफ्ट कुंजी दबाए रखें। यह किसी भी ऑटो को डेटाबेस के भीतर निष्पादित करने से रोकता है। आपको सीधे नेविगेशन विंडो पर जाना चाहिए।डेटाबेस को संकुचित करें और सुधारें। एक बार डेटाबेस लोड होने के बाद, आपको कॉम्पैक्ट और रिपेयर बटन पर क्लिक करना होगा।
- उपकरण रिबन पर कॉम्पैक्ट और मरम्मत डेटाबेस बटन का पता लगाएँ।
- Shift कुंजी दबाए रखें। कॉम्पैक्ट और मरम्मत बटन पर क्लिक करते समय इसे दबाए रखें।
डेटाबेस को पुनःप्राप्त करें
- VBA विंडो में जाएं (कंट्रोल + जी)
- डिबग का चयन करें -> मेनू से संकलित करें
यह पूर्ण अपघटन प्रक्रिया है। आम तौर पर इसे सभी एक्सेस क्रैश या अजीब फॉर्म व्यवहार का 99% ठीक करना चाहिए।
टेस्ट कंप्यूटर मेमोरी
यदि आपके क्रैश यादृच्छिक या छिटपुट हैं, तो यह चरण करें। यदि आपका हर बार डेटाबेस चलाने के बाद क्रैश होता है, तो यह चरण समस्या को ठीक नहीं करेगा (हालाँकि खराब मेमोरी इस कारण हो सकती है कि पहले स्थान पर भ्रष्टाचार क्यों हुआ)।
एक स्मृति परीक्षक का उपयोग करें जो ऑपरेटिंग सिस्टम के बाहर बूट करता है और कई पास चलाता है। दो लोकप्रिय विकल्प हैं MEMTest86 (कमर्शियल) और MemTest86 + (ओपन सोर्स)
परीक्षण शुरू करें और इसे काम के घंटों के दौरान चलने दें। इसका कारण यह है क्योंकि भवन में अन्य कारक जैसे पावर सर्किट पर शोर मेमोरी त्रुटियों का कारण बन सकता है, इसलिए आप चर को समान रखने का प्रयास करना चाहते हैं।
यदि आपके पास मेमोरी त्रुटियां हैं, तो आपको यह पहचानने की आवश्यकता होगी कि क्या यह कंप्यूटर में खराब मेमोरी या किसी अन्य कारक के कारण है। हालांकि यह इस दस्तावेज़ के दायरे से परे है।
फॉर्म से बाइनरी डेटा निकालें
कभी-कभी क्रैश एक ही रूप या रिपोर्ट में लगातार होते हैं, या केवल छपाई करते समय होते हैं। यह संभव है कि प्रपत्र / रिपोर्ट के भीतर द्विआधारी डेटा भ्रष्ट हो गया हो।
पाठ के रूप में फॉर्म / रिपोर्ट ऑब्जेक्ट को सहेजें दो अनैच्छिक कार्य हैं। Application.SaveAsText और Application.LoadFromText। आप प्रपत्र / रिपोर्ट परिभाषाओं को निर्यात करने, परिभाषा को साफ करने और फिर इसे फिर से आयात करने के लिए इन कार्यों का उपयोग कर सकते हैं।
- आगे बढ़ने से पहले अपने डेटाबेस का बैकअप बना लें
- VBA तत्काल विंडो पर जाएं (नियंत्रण + जी)
-
Application.SaveAsText acForm, "MyForm", CurrentProject.Path & "\MyForm.txt"(Application.SaveAsText acForm, "MyForm", CurrentProject.Path & "\MyForm.txt"को फॉर्म / रिपोर्ट के नाम से बदलें। यदि आप एक भ्रष्ट रिपोर्ट को ठीक कर रहे हैं, तो AcReport का उपयोग करें)। - डेटाबेस विंडो के भीतर मूल फॉर्म आइटम (जैसे नाम बदलकर MyForm.Bak) का नाम बदलें
फॉर्म / रिपोर्ट परिभाषा फ़ाइल को साफ करें
नोटपैड में निर्यात की गई फ़ाइल (जैसे MyForm.txt) खोलें
"चेकसम =" लाइन हटाएं (लाइन 3 पर होनी चाहिए)
बाइनरी डेटा को साफ़ करें
बाइनरी डेटा ब्लॉक की पहचान करें। फ़ाइल के माध्यम से देखें और आपको "पैरामीटर = आरंभ" से शुरू होने वाली लाइनें दिखाई देंगी। उन पंक्तियों के बाद आपके पास एन्कोडेड बाइनरी डेटा की लाइनें होंगी। अंत में, बाइनरी ब्लॉक केवल "एंड" वाली लाइन के साथ समाप्त होगा। बाइनरी डेटा ब्लॉक में पहली पंक्ति (शुरुआती स्टेटमेंट के साथ) और अंतिम लाइन (एंड स्टेटमेंट के साथ) तक सभी लाइनें शामिल हैं।
नोट: इन सभी ब्लॉकों में आपकी प्रपत्र नियंत्रण परिभाषाएँ दिखाई जानी चाहिए
निम्न मापदंडों के लिए बाइनरी डेटा ब्लॉक हटाएं:
- NameMap
- PrtMip
- PrtDevMode
- PrtDevNames
- PrtDevModeW
- PrtDevNamesW
अन्य मुद्दों के लिए देखो। जब आपके पास फ़ाइल खुली होती है, तो शेष फ़ाइल के माध्यम से स्क्रॉल करें और कुछ भी देखें जो आपकी आंख को पकड़ती है, विशेष रूप से नीचे VBA मॉड्यूल कोड में। आप ऐसी किसी भी चीज़ की तलाश में होंगे जो बाकी हिस्सों से चिपक जाती है, और भ्रष्टाचार हो सकता है।
फ़ाइल सहेजें।
फॉर्म / रिपोर्ट को वापस एक्सेस और टेस्ट में लोड करें
- फॉर्म को वापस एक्सेस में लोड करें।
- एक्सेस में, तत्काल विंडो पर जाएं (कंट्रोल + जी)
-
Application.LoadFromText acForm, "MyForm", CurrentProject.Path & "\MyForm.txt" - Decompile / कॉम्पैक्ट मरम्मत / Recompile (प्रलेखन के भीतर अन्य उदाहरण देखें)
- परीक्षण करने के लिए प्रपत्र / रिपोर्ट खोलें। उम्मीद है कि अब सब कुछ काम कर रहा है।
- पुराने भ्रष्ट फ़ॉर्म को हटाएं (जैसे MyForm.bak)
भविष्य में इस भ्रष्टाचार को रोकें
एक रिपोर्ट / प्रपत्र के भीतर भ्रष्ट बाइनरी डेटा का सबसे आम कारण है जब कई कंप्यूटर / उपयोगकर्ता अपनी अलग कॉपी होने के बजाय एक ही डेटाबेस क्लाइंट फ़ाइल का उपयोग करते हैं। यही कारण है कि प्रत्येक उपयोगकर्ता के पास अपने डेस्कटॉप पर अपनी क्लाइंट फ़ाइल होनी चाहिए जो वे चलाते हैं।
"OLE ऑब्जेक्ट" फ़ील्ड निकालें
यदि आपके पास एक्सेस ऑब्जेक्ट्स या अन्य डेटा ओएलई ऑब्जेक्ट्स के रूप में एक्सेस में संग्रहीत हैं, तो आपको एक बेहतर दृष्टिकोण ढूंढना चाहिए। जब OLE डेटा संग्रहीत किया जाता है, तो इसे संग्रहीत करने वाले कंप्यूटर पर सॉफ़्टवेयर (और सॉफ़्टवेयर के संस्करण) के अनुसार संग्रहीत किया जाता है। जब कोई अन्य कंप्यूटर उस OLE ऑब्जेक्ट डेटा को प्रदर्शित करने के लिए जाता है, लेकिन सटीक सॉफ़्टवेयर / संस्करण स्थापित नहीं होता है - अक्सर यह एक अनुप्रयोग क्रैश में परिणाम होता है।
यदि आप छवि डेटा संग्रहीत कर रहे हैं, तो फ़ाइल नाम को संग्रहीत करने के लिए एक बेहतर तरीका है, और इसके बजाय छवियों को एक मानक स्थान पर सहेजें। उपयोग के नए संस्करणों में देशी नियंत्रण हैं जो इसे जाने का रास्ता बनाते हैं।
पूरे डेटाबेस का पुनर्निर्माण करें
यह बहुत काम है, इसलिए अन्य सभी विकल्पों को समाप्त करने के बाद अंतिम उपाय के रूप में करें। आपको केवल ऐसा करने की आवश्यकता है यदि समस्या विभिन्न उपयोगकर्ताओं के लिए हो रही है, विभिन्न मशीनों पर। यदि यह सभी उपयोगकर्ताओं के लिए नहीं हो रहा है, तो सबसे अधिक संभावना है कि यह एक भ्रष्ट डेटाबेस कंटेनर नहीं है।
बाइनरी डेटा को हटाने के चरणों के समान, आप अपने डेटाबेस को खरोंच से पुनर्निर्माण करने जा रहे हैं। यह प्रक्रिया थोड़ी अनुष्ठानिक है, लेकिन अगर सावधानीपूर्वक किसी भी संभावित भ्रष्टाचार को "संरक्षित" करने के लिए सावधानी से किया जाता है, तो प्रक्रिया बहुत प्रभावी है।
एक नया एक्सेस डेटाबेस कंटेनर बनाएं।
- एक्सेस में, फ़ाइल टैब पर, आप "नया" का चयन कर सकते हैं। ACCDB प्रारूप में एक नया, खाली डेटाबेस बनाएँ।
सभी वस्तुओं को नए कंटेनर में ले जाएं
वस्तुओं को स्थानांतरित करने के लिए एक्सेस के भीतर आयात / निर्यात कार्यों का उपयोग न करें, और बस क्लिक न करें और खींचें। ऐसा करने से नए कंटेनर पर भ्रष्ट आइटम कॉपी हो सकते हैं।
टेबल्स:
- पुराने एक्सेस कंटेनर में प्रत्येक तालिका के लिए, नए कंटेनर में एक नई तालिका बनाएं।
- डिज़ाइन दृश्य से, फ़ील्ड परिभाषाएँ कॉपी / पेस्ट करें।
- यह सुनिश्चित करने के लिए कि वे दोनों डेटाबेसों में मेल खाते हैं, तालिका गुणों की जाँच करें
- किसी भी डेटा मैक्रोज़ को ऊपर ले जाएं (मैक्रोज़ अनुभाग देखें कि यह कैसे करना है)
- डेटा को स्थानांतरित करने के लिए, पुराने डेटा को XML या CSV में निर्यात करें और फिर उस प्रारूप से आयात करें।
क्वेरी:
- SQL दृश्य में प्रत्येक क्वेरी लोड करें।
- SQL टेक्स्ट को कॉपी / पेस्ट करें।
- नए डेटाबेस में पेस्ट करें।
- वे मैच सुनिश्चित करने के लिए क्वेरी गुणों की तुलना करें।
प्रपत्र / रिपोर्ट:
- प्रत्येक प्रपत्र / रिपोर्ट के लिए, किसी पाठ फ़ाइल में प्रपत्र / रिपोर्ट निर्यात करने के लिए Application.SaveAsText फ़ंक्शन का उपयोग करें।
- बाइनरी डेटा निकालें (स्वयं को इस प्रक्रिया से परिचित करने के लिए प्रपत्र दस्तावेज़ से बाइनरी डेटा देखें)
- नए डेटाबेस में ऑब्जेक्ट्स को फिर से देखने के लिए Application.LoadFromText फ़ंक्शन का उपयोग करें
मैक्रो
आपके पास मैक्रोज़ ले जाने के तीन तरीके हैं।
- नए डेटाबेस कंटेनर में हाथ से प्रत्येक मैक्रो को फिर से बनाएँ।
-
acMacroपैरामीटर के साथApplication.SaveAsText/Application.LoadFromTextविधि का उपयोग करें। - प्रत्येक मैक्रो के लिए मैक्रो परिभाषाएँ कॉपी / पेस्ट करें
- सभी मैक्रो तत्वों का चयन करने के लिए सभी (कंट्रोल + ए) का चयन करें। फिर कॉपी (नियंत्रण + सी)।
- एक खाली नोटपैड दस्तावेज़ और पेस्ट (नियंत्रण + वी) मैक्रो एक्सएमएल खोलें।
- नए डेटाबेस कंटेनर में एक नया रिक्त मैक्रो बनाएँ।
- नोटपैड में, सभी पाठ (नियंत्रण + ए) का चयन करें। फिर कॉपी (नियंत्रण + सी)
- रिक्त मैक्रो में, पेस्ट (नियंत्रण + वी)। मैक्रों को पेश होना चाहिए। बचाओ।
मॉड्यूल
- प्रत्येक मॉड्यूल के लिए, नए डेटाबेस कंटेनर में सभी कोड (कंट्रोल + ए) और पेस्ट (कंट्रोल + वी) का चयन करें।
- डेटाबेस गुण (VBA विंडो में, उपकरण -> ग्राहक गुण) की जाँच करना सुनिश्चित करें
डेटा मैक्रोज़
प्रत्येक डेटा मैक्रो के लिए, SaveAsText / LoadFromText विधियों का उपयोग करें।
- VBA तत्काल विंडो में जाएं (कंट्रोल + जी)
-
Application.SaveAsText acTableDataMacro, "MyTableName", CurrentProject.Path & "\MyTableName.txt"(बदलें MyTableName तालिका के नाम के साथ डेटा एरोस है) - भ्रष्टाचार के किसी भी संकेत के लिए फ़ाइल की समीक्षा करें
- नए डेटाबेस कंटेनर में,
Application.LoadFromText acTableDataMacro, "MyTableName", CurrentProject.Path & "\MyTableName.txt"का उपयोग करके परिभाषा को लोड करें।
जैसा कि पहले उल्लेख किया गया है, यह बहुत काम है, लेकिन इसके परिणाम हैं। इस विधि का उपयोग एक्सेस ६ ९ डेटाबेस से २००० तक या २००३ तक एक्सेस २००० डेटाबेस का उपयोग करते समय भी किया जाना चाहिए।