2010-01-12 14 views
5

एमएस एक्सेस में कॉलम का नाम बदलने के लिए डीडीएल क्या है? की तर्ज पर कुछ:MSAccess में कॉलम का नाम बदलने के लिए डीडीएल क्या है?

alter table myTable rename col1 to col2

जो MSAccess 2000 स्वरूप डेटाबेस के लिए काम नहीं करता। मैं एक एमएसएक्स 2000 प्रारूप डीबी के साथ ओएलईडीबी या एडीओ.NET का उपयोग कर रहा हूं लेकिन किसी अन्य तरीके से ADO.NET का उपयोग करके इसे प्राप्त करने के तरीके के बारे में सिंटैक्स या किसी सुझाव पर किसी भी संकेत का आभारी रहूंगा।

उत्तर

6

मैं घर पर हूं और इस समय इसका परीक्षण नहीं कर सकता, लेकिन मुझे लगता है कि यह काम करना चाहिए। यह site इसके बारे में जानकारी है।

ALTER TABLE thetable ALTER COLUMN fieldname fieldtype 

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

alter table test drop column i; 
alter table test add column j integer; 
4

मैं तुम्हें एक नया स्तंभ जोड़कर, मौजूदा स्तंभ से अद्यतन करने और उसके बाद 'पुराने' स्तंभ को हटाने के द्वारा की तुलना में इस, अन्य क्या कर सकते हैं विश्वास नहीं है।

यह VBA में हालांकि, काफी सरल है,:

Set db = CurrentDb 
Set fld = db.TableDefs("Table1").Fields("Field1") 
fld.Name = "NewName" 
+3

... निश्चित रूप से डीएओ का उपयोग करके। डीएओ जेट को नियंत्रित करने के लिए प्राकृतिक इंटरफेस है, और डीडीएल सुविधाजनक हो सकता है, लेकिन जेट/एसीई द्वारा इसे कभी भी समर्थित नहीं किया गया है। मैंने कभी परवाह नहीं की है, क्योंकि मैं कोड के माध्यम से अपनी स्कीमा को नहीं बदलता (मैं इसे हाथ से करता हूं, क्योंकि ऐसा कुछ ऐसा होता है जो नीले चंद्रमा में एक बार होता है - इसमें इसे स्क्रिप्ट करने में अधिक समय लगेगा और इसका परीक्षण करने की तुलना में इसका परीक्षण होगा बस कर दो)। –

2

मैंने पहले इस देखा है और वहाँ कोई DDL बयान है कि आप के लिए यह कर सकते हैं। केवल एक नया कॉलम जोड़ने, डेटा कॉपी करने और पुराने कॉलम को हटाने का तरीका है।

3

VBA में आप यह कर सकते हैं एक स्तंभ नाम बदलने के लिए:

Dim acat As New ADOX.Catalog 
Dim atab As ADOX.Table 
Dim acol As ADOX.Column 
Set acat = New ADOX.Catalog 
acat.ActiveConnection = CurrentProject.Connection 
Set atab = acat.Tables("yourTable") 
For Each acol In atab.Columns 
    If StrComp(acol.Name, "oldName", vbTextCompare) = 0 Then 
     acol.Name = "newName" 
     Exit For 
    End If 
Next acol 
5

मेरे समाधान, सरल लेकिन प्रभावी:

Dim tbl as tabledef 
set tbl = currentdb.TableDefs("myTable") 
tbl.fields("OldName").name = "Newname" 
0

फ़िओनुला DDL का उपयोग करके प्रदान की जवाब

ALTER TABLE [your table] ADD COLUMN [your newcolumn] Text(250) 
UPDATE [your table] SET [your table].[newcolumn] = [your table].[old column] 
ALTER TABLE [your table] DROP COLUMN [oldcolumn] 
है

ध्यान दें कि स्पष्ट रूप से आप अपने नए कॉलम के लिए कोई भी कॉलम प्रकार निर्दिष्ट कर सकते हैं, और टेक्स्ट (250) केवल चित्रण के लिए है

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