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"
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 ステートメントはありません。唯一の方法は、新しい列を追加し、データをコピーして古い列を削除することです。