2010-02-18 15 views
7

मेरे पास एक वीबी 6/एक्सेस एप्लिकेशन है जो कभी-कभी गलत ऑटोनंबर फील्ड बीज के साथ समस्या का सामना करता है।ऑटोऑम्बर बीज रीसेट करें

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

मुझे एक KB आलेख मिला जो मेरे लक्षणों का वर्णन करता है: http://support.microsoft.com/kb/884185

ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1) 

जब मैं यह करने के लिए प्रयास करते हैं, यह "अवैध क्षेत्र डेटा प्रकार"

अगर मैं Access में डेटाबेस खोल सकते हैं और कर समस्या तय हो जाता है के साथ विफल: संक्षेप में, वे एक क्वेरी चलाने के लिए सुझाव देते हैं कॉम्पैक्ट/मरम्मत, लेकिन मुझे एप्लिकेशन के अंदर ऐसी समस्याओं को ठीक करने में सक्षम होना चाहिए: यह दुनिया भर के कुछ हजारों पीसी पर स्थापित है, और लोगों से एक्सेस के साथ कॉम्पैक्ट/मरम्मत करने के लिए लोगों को एक विकल्प नहीं है।

मैं आवेदन के अंदर कॉम्पैक्ट/मरम्मत करने के लिए डीएओ DBEngine.CompactDatabase का उपयोग करता हूं, लेकिन यह बीज की समस्या को ठीक नहीं करता है, और कुछ अतिरिक्त चाल की आवश्यकता होती है।

मुझे आशा है कि किसी एक समाधान के लिए एक विचार है, मैं वास्तव में करने के लिए बेताब

धन्यवाद करीब सभी

+0

, आप तालिका बंद कर रहे हैं ** से पहले ** चल 'ALTER तालिका mytable ALTER स्तंभ आईडी काउंटर (1001, 1) '? –

+0

यदि कोड एक्सेस एमडीसी/एसीसीडीबी के अंदर है, तो भाषा वीबीए है, वीबी 6 नहीं। कृपया स्पष्ट करें। – Fionnuala

+0

@ ओटाकू: हाँ, सुनिश्चित करें यह क्वेरी एक्सेस के अंदर निष्पादित होने पर और डीएओ के माध्यम से निष्पादित होने पर विफल हो जाती है। अजीब चीज यह है: यदि एक्सेस में मैं ऑटोनंबर फ़ील्ड को हटा देता हूं, और फिर बिल्कुल वही फ़ील्ड बना देता हूं, तो क्वेरी काम करती है। ऐसा लगता है कि ऑटोनंबर प्रकार के विभिन्न स्वाद हैं, लेकिन मुझे यह अंतर नहीं मिल सकता है कि यह अंतर – Incidently

उत्तर

4

का संदर्भ लें निम्न आलेख, यह एक तरीका है कि आप अपने पहुँच परियोजना पर अमल करने के लिए जोड़ सकते हैं शामिल कर रहा हूँ बीजिंग रीसेट करने के लिए। यह अतीत में मुझे कई अवसरों के लिए एक बचाने वाला रहा है:

http://allenbrowne.com/ser-40.html

इस के अलावा यह इस तरह की समस्याओं के लिए कारणों की व्याख्या और अंतर्दृष्टि और संभावित संकल्प देता है।

+0

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

+0

धन्यवाद! यह पूरी तरह से काम करता है – Incidently

0

आपको यह सुनिश्चित करने की भी आवश्यकता हो सकती है कि आपका डेटाबेस ANSI 92 का उपयोग करने के लिए सेट किया गया है ताकि COUNTER को वैध डेटा प्रकार के रूप में पहचाना जा सके।

एक्सेस 2007 में एक्सेस विकल्प, ऑब्जेक्ट डिज़ाइनर, एसक्यूएल सर्वर संगतता सिंटैक्स (एएनएसआई 9 2) पर सेट करने के लिए जाएं।

+0

SQL 92 मोड सेट करने से बचने के लिए आप एडीओ के साथ एल्टर टेबल निष्पादित कर सकते हैं। –

0

आप एक कॉम्पैक्ट/मरम्मत के साथ समस्या को हल करने में सक्षम हो सकता है:

In Access 2010: Compact and Repair Database on the Database Tools ribbon. 
In Access 2007: Office Button | Manage. 
In earlier versions: Tools | Database Utilities. 
curosity से बाहर
संबंधित मुद्दे