8

在 MS Access 中重命名列的 DDL 是什么?类似于以下内容:

alter table myTable rename col1 to col2

这不适用于 MSAccess 2000 格式的数据库。我正在使用带有 MSAccess 2000 格式数据库的 OLEDB 或 ADO.NET,但如果有任何语法提示或关于如何以其他方式使用 ADO.NET 实现此目的的建议,我将不胜感激。

4

6 回答 6

8

我不相信你能做到这一点,除了附加一个新列,从现有列更新,然后删除“旧”列。

但是,在 VBA 中非常简单:

Set db = CurrentDb
Set fld = db.TableDefs("Table1").Fields("Field1")
fld.Name = "NewName"
于 2010-01-12T13:53:32.873 回答
7

我在家里,目前无法对此进行测试,但我认为这应该可以。这个网站有关于它的信息。

ALTER TABLE thetable ALTER COLUMN fieldname fieldtype

编辑 我对此进行了一些测试,奇怪的是,您无法重命名我能找到的列。该ALTER COLUMN语法仅允许更改类型。使用 SQL,似乎有必要删除列然后将其重新添加。我想数据可以保存在临时表中。

alter table test drop column i;
alter table test add column j integer;
于 2010-01-12T13:41:55.793 回答
5

我的解决方案,简单但有效:

Dim tbl as tabledef
set tbl = currentdb.TableDefs("myTable")
tbl.fields("OldName").name = "Newname" 
于 2014-08-01T20:25:55.073 回答
4

Fionnuala 使用 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]

请注意,显然您可以为新列指定任何列类型,Text(250) 仅用于说明

于 2018-02-14T21:50:57.817 回答
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
于 2013-01-08T20:21:04.677 回答
2

我以前研究过这个,没有 DDL 语句可以为你做这件事。唯一的方法是添加新列,复制数据并删除旧列。

于 2010-01-12T23:36:45.703 回答