非参数化命令的操作

适用于:Access 2013、Office 2013

对于非参数化命令,在命令执行期间将执行所有提供程序命令,并创建 Recordset 。 如果同步执行命令,则所有 Recordset 都将完全填充。 如果选择异步填充模式,则 Recordset 的填充状态将取决于填充模式和 Recordset 的大小。

例如,父命令可以从 Customers(客户)表返回公司顾客的 Recordset,并且该子命令可以从 Orders(订单)表返回所有顾客订单的 Recordset

 
SHAPE {SELECT * FROM Customers} 
 APPEND ({SELECT * FROM Orders} AS chapOrders 
 RELATE customerID TO customerID) 

对于非参数化父子关系,每个父和子 Recordset 对象都必须共同拥有一个列,以便将它们关联在一起。 对列的命名在 RELATE 子句中完成,首先命名父列然后命名子列。 列在其各自 Recordset 对象中可能有不同名称,但它们必须引用相同信息才能指定有意义的关系。 例如, CustomersOrdersRecordset 对象都可以具有 customerID 字段。 由于子 Recordset 的成员是由提供程序命令确定的,因此子 Recordset 有可能包含孤立行。 如果不进一步重新定形,这些孤立行将是不可访问的。

数据定形会向父 Recordset 追加章节列。 章节列中的值是对满足 RELATE 子句的子 Recordset 中的行的引用。 就是说,在给定父行的父列中具有与在章节子项的所有行的子列中相同的值。 在同一 RELATE 子句中使用多个 TO 子句时,将使用 AND 运算符对它们进行隐式组合。 如果 RELATE 子句中的父列不构成父 Recordset 的键,则单个子行可能有多个父行。

访问章节列中的引用时,ADO 将自动检索引用所表示的 Recordset 。 注意,在非参数化命令中,尽管已经检索整个子 Recordset ,但章节只显示行的子集。

如果追加的列没有 chapter-alias,系统将自动为它生成名称。 列的 Field 对象将追加到 Recordset 对象的 Fields 集合,并且它的数据类型将是 adChapter

有关在分层 Recordset 中导航的信息,请参阅 访问分层记录集中的行