修改Ms Access数据库时是否可以指示放置/订购新字段?

时间:2013-02-06 03:30:06

标签: ms-access ado dao

我需要通过代码修改MS Access数据库的架构 - 但我希望能够指导表中字段的顺序或位置。

例如 - 如果TableOne有3个字段 - Field10,Field20和Field30。我希望能够在Field10和Field20之间添加说Field15 - 而不仅仅是将其附加到现有字段的末尾。

也许我错过了一些东西,但似乎ADO,ADOX ADOD等等都只是将新字段添加到最后。我知道它应该是可能的,因为你可以在MS Access中完成它并且它可以工作。

1 个答案:

答案 0 :(得分:0)

您可以使用VBA修改DAO.TableDef,并在添加之前指定新字段的OrdinalPosition属性。看看您是否可以从立即窗口构建此示例会话:

set db = currentdb
for each f in db.tabledefs("DiscardMe").fields : _
? f.name, f.ordinalposition : _
next
ID             0 
empid          1 
dtpunched      2 
fake_yesno     3 

set newfield = db.tabledefs("DiscardMe").createfield("fld2", dbtext)
newfield.ordinalposition = 1
db.tabledefs("DiscardMe").fields.append newfield

但请注意,该表现在包含2个OrdinalPosition = 1

的字段
for each f in db.tabledefs("DiscardMe").fields : _
? f.name, f.ordinalposition : _
next
ID             0 
empid          1 
dtpunched      2 
fake_yesno     3 
fld2           1 

Access帮助主题解释“同一个集合中的两个或多个Field对象可以具有相同的OrdinalPosition属性值,在这种情况下,它们将按字母顺序排序。”所以查询{{1 ,给我这个:

SELECT TOP 1 DiscardMe.* FROM DiscardMe;

通过一些改进,这种方法可以让你得到你想要的。但是,我避免依赖列的序数位置。如果它们应该改变,我不希望我的代码破坏。