最好的办法当然还是直接在数据库中更改,如果一定要用代码修改,可以在vb 中依次执行下面的SQL语句: select A as B, ... into table2 from table1 drop table table1 select * into table1 from table2 drop table table2 当然这样写是比较麻烦,而且有一个最大的问题是如果原表中有主键的话,这样一转,主键会丢失。所以还要执行一条添加主键的SQL语句。我也不知道有没有别的更好的办法,关键是在最初设计数据库的时候应该考虑周全。
用 create table table_name(字段名) as select * from 要改列名的表;
如果用的是DAO,用tabledef对象: Dim db As Database, tb As TableDef Set db = DBEngine.OpenDatabase("yourDB.mdb") Set tb = db.TableDefs("oldname") tb.Name = "newname" tb.Close db.Close Set tb = Nothing Set db = Nothing
呵呵,看错了,以为是该表名。对不起: Dim db As Database, tb As TableDef, fld As Field Set db = DBEngine.OpenDatabase("yourDB.mdb") Set tb = db.TableDefs("yourTable") Set fld = tb.Fields("oldFieldname") fld.Name = "newFieldname" db.Close Set tb = Nothing Set db = Nothing
select A as B, ... into table2 from table1
drop table table1
select * into table1 from table2
drop table table2
当然这样写是比较麻烦,而且有一个最大的问题是如果原表中有主键的话,这样一转,主键会丢失。所以还要执行一条添加主键的SQL语句。我也不知道有没有别的更好的办法,关键是在最初设计数据库的时候应该考虑周全。
create table table_name(字段名)
as select * from 要改列名的表;
Dim db As Database, tb As TableDef
Set db = DBEngine.OpenDatabase("yourDB.mdb")
Set tb = db.TableDefs("oldname")
tb.Name = "newname"
tb.Close
db.Close
Set tb = Nothing
Set db = Nothing
exec sp_rename '数据库名.dbo.表名.[字段名]','新名'
在查询分析器里试过,应该用 conn.Execute 可以执行(没试)
Dim db As Database, tb As TableDef, fld As Field
Set db = DBEngine.OpenDatabase("yourDB.mdb")
Set tb = db.TableDefs("yourTable")
Set fld = tb.Fields("oldFieldname")
fld.Name = "newFieldname"
db.Close
Set tb = Nothing
Set db = Nothing