2010-01-12 42 views
5

什麼是DDL重命名MS Access中的列?沿着線的東西:MSAccess中重命名DDL的DDL是什麼?

alter table myTable rename col1 to col2

不爲MSACCESS 2000格式的數據庫。我使用的是帶有MSAccess 2000格式數據庫的OLEDB或ADO.NET,但會感謝關於如何以某種其他方式使用ADO.NET實現此功能的語法或建議的任何提示。

回答

6

我在家,目前無法測試這個,但我認爲這應該有效。這site有關於它的信息。

ALTER TABLE thetable ALTER COLUMN fieldname fieldtype 

編輯我這個測試了一下,奇怪的是,你不能重命名列,我可以找到。 ALTER COLUMN語法只允許更改類型。使用SQL,似乎有必要刪除該列,然後將其添加回來。我想這些數據可以保存在臨時表中。

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

...當然使用DAO。 DAO是控制Jet的自然界面,而DDL可以很方便,但Jet/ACE從未得到過很好的支持。我從來沒有關心過,因爲我沒有通過代碼來改變我的模式(我手工完成,因爲它是在藍色月亮中發生的事情 - 編寫腳本並測試它比花費時間更長去做就對了)。 – 2010-01-12 22:47:15

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 Fionnuala提供的答案是

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] 

請注意,顯然,您可以爲新列指定任何列類型,而Text(250)僅用於illustrati在