我需要通过代码修改 MS Access 数据库的架构——但我希望能够指导表中字段的顺序或放置。
例如 - 如果 TableOne 有 3 个字段 - Field10、Field20 和 Field30。我希望能够在 Field10 和 Field20 之间添加说 Field15 - 而不仅仅是将其附加到现有字段的末尾。
也许我遗漏了一些东西,但似乎 ADO、ADOX ADOD 等都只是将新字段附加到末尾。我知道这应该是可能的,因为您可以在 MS Access 中执行它并且它可以工作。
您可以使用 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 属性值,在这种情况下,它们将按字母顺序排列。” 所以查询 ,SELECT TOP 1 DiscardMe.* FROM DiscardMe;
给了我这个:
ID empid fld2 dtpunched fake_yesno
1 100 4/3/2012 0
通过一些改进,这种方法可能会得到你想要的。但是,我避免依赖列的序数位置。如果他们应该改变,我不希望我的代码破坏。