Что такое DDL для переименования столбца в MSAccess? - PullRequest
5 голосов
/ 12 января 2010

Что такое DDL для переименования столбца в MS Access? Что-то вроде:

alter table myTable rename col1 to col2

, который не работает для баз данных формата MSAccess 2000. Я использую OLEDB или ADO.NET с БД формата MSAccess 2000, но был бы признателен за любую подсказку о синтаксисе или предложение о том, как добиться этого с помощью ADO.NET каким-либо другим способом.

Ответы [ 6 ]

6 голосов
/ 12 января 2010

Я дома и не могу проверить это в данный момент, но я думаю, что это должно работать.Этот сайт содержит информацию об этом.

ALTER TABLE thetable ALTER COLUMN fieldname fieldtype

Редактировать Я немного протестировал и, как ни странно, вы не можете переименовать столбец, который я могу найти.Синтаксис ALTER COLUMN позволяет изменять только тип.При использовании SQL представляется необходимым удалить столбец и затем добавить его обратно. Я полагаю, что данные можно сохранить во временной таблице.

alter table test drop column i;
alter table test add column j integer;
5 голосов
/ 02 августа 2014

Мое решение, простое, но эффективное:

Dim tbl as tabledef
set tbl = currentdb.TableDefs("myTable")
tbl.fields("OldName").name = "Newname" 
5 голосов
/ 12 января 2010

Я не верю, что вы можете сделать это, за исключением добавления нового столбца, обновления из существующего столбца и последующего удаления «старого» столбца.

Однако в VBA все довольно просто:

Set db = CurrentDb
Set fld = db.TableDefs("Table1").Fields("Field1")
fld.Name = "NewName"
3 голосов
/ 09 января 2013

В 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
2 голосов
/ 13 января 2010

Я смотрел на это раньше, и нет никакого DDL-заявления, которое могло бы сделать это для вас. Единственный способ - добавить новый столбец, скопировать данные и удалить старый столбец.

0 голосов
/ 15 февраля 2018

Ответ, предоставленный 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) только для иллюстрации

...