在 MS Access 中重命名列的 DDL 是什么?类似于以下内容:
alter table myTable rename col1 to col2
这不适用于 MSAccess 2000 格式的数据库。我正在使用带有 MSAccess 2000 格式数据库的 OLEDB 或 ADO.NET,但如果有任何语法提示或关于如何以其他方式使用 ADO.NET 实现此目的的建议,我将不胜感激。
我不相信你能做到这一点,除了附加一个新列,从现有列更新,然后删除“旧”列。
但是,在 VBA 中非常简单:
Set db = CurrentDb
Set fld = db.TableDefs("Table1").Fields("Field1")
fld.Name = "NewName"
我在家里,目前无法对此进行测试,但我认为这应该可以。这个网站有关于它的信息。
ALTER TABLE thetable ALTER COLUMN fieldname fieldtype
编辑 我对此进行了一些测试,奇怪的是,您无法重命名我能找到的列。该ALTER COLUMN
语法仅允许更改类型。使用 SQL,似乎有必要删除列然后将其重新添加。我想数据可以保存在临时表中。
alter table test drop column i;
alter table test add column j integer;
我的解决方案,简单但有效:
Dim tbl as tabledef
set tbl = currentdb.TableDefs("myTable")
tbl.fields("OldName").name = "Newname"
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) 仅用于说明
在 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
我以前研究过这个,没有 DDL 语句可以为你做这件事。唯一的方法是添加新列,复制数据并删除旧列。