ADO 使您能够回答其答案可表示为 Recordset 的提问。例如,假设您要公司客户的列表,而您有包含名为 Customers 的表的数据库。对表发出查询命令,则 ADO 将返回 Recordset,在 Recordset 中每个行表示一个客户,并且每个行的列拥有能够包含客户的名称、地址、客户 ID 等内容的数据类型。
“数据构形”使您能够回答其答案可由成形的 Recordset 表示的提问。数据构形定义成形 Recordset 的列、由列表示条目之间的关系和数据充填到 Recordset 的方式。
成形 Recordset 的列可以包含来自数据提供者(如 SQL Server)的数据、对另一个 Recordset 的引用、对 Recordset 一个行进行计算得到的值、对整个 Recordset 的列进行操作所得到的值,或者可以是新虚构的空列。
在检索包含对另一个 Recordset 的引用的列的值时,ADO 将自动返回由引用表示的实际的 Recordset。包含另一个 Recordset 的 Recordset 称为“分级 Recordset”或“分级游标”。
例如,假定您要得到由公司每个客户发出的所有定单的列表。可对包含名为 Customers 和 Orders 的数据库表发出数据构形命令。如同上例一样,ADO 将返回客户记录 Recordset。但是,每行将同时有附加的列,该列引用包含所有该客户定单的 Recordset。
改进该形状即可获得按州排列的销售总计的列表。在 Customers 表中的地址列包含每个客户的州,而 Orders 表的数量列则包含每个定单的数量。发出不同的数据构形命令,则 ADO 将返回 Recordset,该 Recordset 包含每个州一个行(在此,每个行包含标识州的列)、该州所有定单的销售量总计和对开列该州的所有客户的 Recordset 的引用。访问该客户 Recordset 将会发现与前面的范例一样,每个客户行均含有对包含所有该客户定单的 Recordset 的引用。
Shape 命令语法使您能够通过编程创建成形的 Recordset。然后就可以通过编程或适当的可视化控件,访问 Recordset 的组件。
有关数据构形的详细信息,请参阅如下主题: