动态集类型的 Recordset 对象可以基于包含具有一对多关系的表的多表查询。 例如,假设您要创建一个多表查询来组合“订单”和“订单明细”表中的字段。 一般来说,您无法更改“订单”表中的值,因为该表在关系的“一”方。 但是,根据您的应用需要,您可能希望能够对“订单”表进行更改。
若要自由更改一对多关系的“一”端的值,请使用 OpenRecordset 方法的 dbInconsistent 常量来创建不一致的动态集。 例如:
Set rstTotalSales = dbs.OpenRecordset("Sales Totals" ,,dbInconsistent)
更新不一致的动态集时,很容易会破坏动态集中数据的参照完整性。 必须注意了解在一对多关系中数据的关联方式,并且要注意以保留数据完整性的方式更新双方的值。
dbInconsistent 常量仅适用于动态集类型的 Recordset 对象。 对于表、快照和仅向前类型的 Recordset 对象,将忽略它,但如果 dbInconsistent 常量与这些类型的 Recordset 对象一起使用,则不会返回编译或运行时错误。
即使使用不一致的 Recordset,某些字段也可能不更新。 例如,不能更改“自动编号”字段的值,基于某些链接的表的 Recordset 也不能更新。