2011-08-29 13 views
10

मेरे पास एक ऑटोनंबर फ़ील्ड के साथ एक्सेस डेटाबेस में एक टेबल है।एक्सेस में ट्रंकेट है?

जब मैं तालिका से सभी रिकॉर्ड्स हटा देता हूं, तो ऑटोऑनंबर अंतिम संख्या को याद करता है।

क्या एक्सेस SQL ​​सर्वर के TRUNCATE TABLE MyTbl के समान कुछ है?

यदि नहीं, तो तालिका के रिकॉर्ड को हटाने के बाद 1 से कैसे शुरू करें?

+1

आपका मतलब यह नहीं है कि "तालिका को हटाने के बाद" - आपका मतलब है "तालिका में सभी रिकॉर्ड्स को हटाने के बाद"। यदि आपने वास्तविक तालिका को हटा दिया है, तो आपको निश्चित रूप से एक नया ऑटोनंबर मान मिलेगा। –

उत्तर

3

1 सेकंड ले लिया पर समाधान खोजने के लिए:

http://www.webmasterworld.com/databases_sql_mysql/3227574.htm

कॉम्पैक्ट और मरम्मत की प्रक्रिया शून्य करने के लिए सभी खाली टेबल ऑटो वेतन वृद्धि काउंटर रीसेट कर देगा। > डेटाबेस उपयोगिताएँ - -> कॉम्पैक्ट और मरम्मत डाटाबेस

1

सभी रिकॉर्ड को हटाएं और फिर डेटाबेस संकुचित

उपकरण: तो, सभी रिकॉर्ड फिर हटाएं।

15

एक्सेस एसक्यूएल में TRUNCATE TABLE जैसी कोई चीज़ नहीं है।

आप एक डीडीएल स्टेटमेंट निष्पादित करने के लिए एडीओ कनेक्शन का उपयोग कर सकते हैं जो ऑटोनंबर फ़ील्ड के "बीज" मान को रीसेट करता है। तो आप इसे वीबीए कोड के साथ कर सकते हैं, और Autonumber रीसेट करने के लिए कॉम्पैक्ट & मरम्मत का उपयोग नहीं करना है।

इस उदाहरण कोड पहले मेरी tblFoo तालिका वाली सभी पंक्तियां हटा देता है, और उसके बाद आईडी AutoNumber फ़ील्ड के लिए बीज मूल्य रीसेट करता है।

Dim strSql As String 
strSql = "DELETE FROM tblFoo;" 
CurrentProject.Connection.Execute strSql 
strSql = "ALTER TABLE tblFoo ALTER COLUMN id COUNTER (1, 1);" 
CurrentProject.Connection.Execute strSql 
3

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

enter image description here

+0

यह कैसे truncate कार्यक्षमता से संबंधित है? – MarioDS

0

या कॉम्पैक्ट और मरम्मत के बिना जब VBA का उपयोग कर: मान लें कि आपका टेबल 'MyTable' है। डेटा के बिना उस तालिका की एक प्रति बनाएं और उदाहरण के लिए इसे 'MyTable_Template' के रूप में सहेजें। जब आप तालिका को छोटा करना चाहते हैं तो 'MyTable_Template' को 'MyTable' पर प्रतिलिपि करें 'dROP' तालिका में। अब आपकी 'नई' टेबल 'MyTable' का autoincrementfield 1 फिर से शुरू होगा।

3

या बिना कॉम्पैक्ट और मरम्मत:

खाली अपनी मेज:

DELETE FROM MyTable 

ऑल्टर autoincrementfield पूर्णांक के लिए ('आईडी' की तरह):

ALTER TABLE MyTable ALTER Column ID INT; 

ऑल्टर क्षेत्र वापस AutoIncrement रहे हैं:

ALTER TABLE MyTable ALTER Column ID AUTOINCREMENT; 
2

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

CurrentProject.Connection.Execute "DELETE FROM Mytbl" 
CurrentProject.Connection.Execute "INSERT INTO Mytbl(ID) VALUES(0)" 
CurrentProject.Connection.Execute "DELETE FROM Mytbl" 

नोट: बेहतर प्रदर्शन के लिए execute कमांड के बाद adExecuteNoRecords रखें। जैसे CurrentProject.Connection.Eqecute sql, adExecuteNoRecords

0

MS_Access डेटाबेस में, "Truncate समर्थित नहीं है"। तो हम पहले "हटाएं" क्वेरी द्वारा सभी रिकॉर्ड्स को हटा सकते हैं।

रिकॉर्ड्स को हटाने के बाद, हम "आल्टर" क्वेरी का उपयोग करके "आईडी" कॉलम 1 से शुरू कर सकते हैं।

क्वेरी:

"Delete * from (Your Table Name); 
    Alter Table (Your Table Name) Alter Column (Your Column Id) Counter(1,1);" 

इस दो प्रश्नों एकल निष्पादन में हम सभी रिकॉर्ड को हटाने और स्तंभ आईडी शुरू होता है से 1.

+0

[हंसअप द्वारा उत्तर] की तुलना में इस उत्तर में कोई भी अतिरिक्त जानकारी नहीं है (http://stackoverflow.com/a/7237441/3820271)। इस उत्तर को पोस्ट करने का क्या मतलब था? – Andre

+0

मुझे हंसअप का जवाब नहीं दिख रहा है। क्योंकि किसी भी उत्तर पर कोई टिक चिह्न नहीं है। तो केवल कुछ ही मेरे बिंदु में मेरा जवाब जोड़ें। –

0

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

संबंधित मुद्दे