1

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

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

也许我遗漏了一些东西,但似乎 ADO、ADOX ADOD 等都只是将新字段附加到末尾。我知道这应该是可能的,因为您可以在 MS Access 中执行它并且它可以工作。

4

1 回答 1

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 属性值,在这种情况下,它们将按字母顺序排列。” 所以查询 ,SELECT TOP 1 DiscardMe.* FROM DiscardMe;给了我这个:

ID empid fld2 dtpunched fake_yesno
 1   100       4/3/2012          0

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

于 2013-02-06T05:12:59.980 回答