2010-01-12 27 views
5

DDL để đổi tên một cột trong MS Access là gì? Một cái gì đó dọc theo dòng:DDL để đổi tên cột trong MSAccess là gì?

alter table myTable rename col1 to col2

mà không làm việc cho MSAccess 2000 định dạng cơ sở dữ liệu. Tôi đang sử dụng OLEDB hoặc ADO.NET với một db định dạng MSAccess 2000 nhưng sẽ biết ơn bất kỳ gợi ý nào về cú pháp hoặc gợi ý về cách thực hiện điều này bằng cách sử dụng ADO.NET theo một cách khác.

Trả lời

6

Tôi đang ở nhà và không thể kiểm tra điều này vào lúc này, nhưng tôi nghĩ điều này sẽ hiệu quả. Điều này site có thông tin về nó.

ALTER TABLE thetable ALTER COLUMN fieldname fieldtype 

Sửa Tôi thử nghiệm này một chút và kỳ quặc đủ, bạn không thể đổi tên một cột mà tôi có thể tìm thấy. Cú pháp ALTER COLUMN chỉ cho phép thay đổi loại. Sử dụng SQL, có vẻ như cần thiết để thả cột và sau đó thêm nó trở lại. Tôi cho rằng dữ liệu có thể được lưu trong một bảng tạm thời.

alter table test drop column i; 
alter table test add column j integer; 
4

Tôi không tin bạn có thể làm điều này, ngoài việc thêm cột mới, cập nhật từ cột hiện tại và sau đó xóa cột 'cũ'.

Đó là, tuy nhiên, khá đơn giản trong VBA:

Set db = CurrentDb 
Set fld = db.TableDefs("Table1").Fields("Field1") 
fld.Name = "NewName" 
+3

... bằng DAO, tất nhiên. DAO là giao diện tự nhiên để điều khiển Jet, và trong khi DDL có thể thuận tiện, nó không bao giờ được hỗ trợ tốt bởi Jet/ACE. Tôi không bao giờ quan tâm, vì tôi không thay đổi lược đồ của mình thông qua mã (tôi làm điều đó bằng tay, vì nó xảy ra một lần trong một mặt trăng xanh - nó sẽ mất nhiều thời gian hơn để viết kịch bản và kiểm tra nó hơn cứ làm đi). –

2

Tôi đã nhìn vào điều này trước và không có lệnh DDL có thể làm điều này cho bạn. Chỉ có phương pháp là thêm cột mới, sao chép dữ liệu và xóa cột cũ.

3

Trong VBA, bạn có thể làm điều này để đổi tên một cột:

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

Giải pháp của tôi, đơn giản nhưng hiệu quả:

Dim tbl as tabledef 
set tbl = currentdb.TableDefs("myTable") 
tbl.fields("OldName").name = "Newname" 
0

Câu trả lời được cung cấp bởi Fionnuala sử dụng DDL là

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] 

Lưu ý rằng rõ ràng bạn có thể chỉ định bất kỳ loại cột nào cho cột mới của mình và Văn bản (250) chỉ dành cho illustrati trên

Các vấn đề liên quan