数据构形总结

目录

ADO 2.0 推出了数据构形功能、分级记录集和 Shape 命令语法。

ADO 2.1 通过插入 COMPUTE 命令推出重构形、孙子合计和参数化命令。

数据构形

数据构形使您能够定义成形 Recordset 的列、由列表示的条目之间的关系和数据充填到 Recordset 的方式。

成形 Recordset 的列可以包含数据、对另一个 Recordset 的引用、对 Recordset 一个行进行计算得到的值、对整个 Recordset 的列进行操作所得到的值,或者可以是新虚构的空列。

在检索包含对另一个 Recordset 的引用的列的值时,ADO 将自动返回由引用表示的实际的 Recordset。包含另一个 RecordsetRecordset 被称为“分级 Recordset”。分级 Recordsets 展示的是父-子关系,其中“父”是包含的 Recordset,而“子”是被包含的 Recordset。对 Recordset 的引用实际是对子的子集合(即“子集”)的引用。单个父可以包含多个子 Recordset

ADO 2.0 同时推出了新的 Shape 命令语法,能够通过编程创建成形的 Recordset 对象。Shape 命令可以象其他任何 ADO 命令文本一样发出。

使用 Shape 命令语法,可通过两种途径创建分级的 Recordset 对象。其一是将子 Recordset 追加到父 Recordset,一般,父和子至少必需有一个列:在父的行中列的值与子的所有行中列的值相同。

其二则是从子 Recordset 产生父 Recordset。在引用子 Recordset 的父中,必须有子集列。创建其他父列的途径是:对子列的合计运算,运算 Recordset 行的表达式,使用 BY 关键字指定分组的列,或追加新的空列。

可将分级 Recordset 对象嵌套到所需的任何深度(即创建子 Recordset 对象的子 Recordset 对象,如此继续)。

通过程序或相应的可视控件,可以访问成形的 RecordsetRecordset 组件。

Microsoft 提供了能够生成 Shape 命令的可视化工具(请参阅 Visual Basic 主题,“数据环境设计者”)以及另一个能够显示分级游标的可视化工具(请参阅 Visual Basic 主题,“使用 Microsoft Hierarchical Flexgrid Control”)。

重构形

由 Shape 命令的子句创建的 Recordset 可以被赋值为“别名”(一般使用 AS 关键字)。在 ADO 2.1 中,成形 Recordset 的别名可以在完全不同的命令中引用。就是说,可以发出新的 Shape 命令来更改(即重构形)以前构形的 Recordset。为了支持该功能,ADO 提供了新的 Recordset 对象 Name 属性。

所受限制为不可以将列追加到现有的 Recordset 中,或在任何插入 COMPUTE 的子句中对参数化的 RecordsetRecordset 对象进行重构形,或对除正在被构形的 Recordset 以外的任何 Recordset 执行合计操作。

孙子合计

用 Shape 命令的子句创建的子集列可以得到“子集-别名名称”(一般使用 AS 关键字)。可以使用用以标识包含了列的子的完整名称,在子集中标识成形 Recordset 的任何列。例如,如果父子集 chap1 包含拥有数量列 amt 的子子集 chap2,那么完整名称将是 chap1.chap2.amt。然后,完整名称可以用作参数在合计函数 (SUM, AVG, MAX, MIN, COUNT, STDEV, or ANY) 中使用。

使用插入 COMPUTE 命令的参数化命令

典型的参数化形状 APPEND 命令含有通过查询命令创建父 Recordset 的子句,以及通过参数化查询命令(即包含参数占位符:问号“?”的命令)创建子 Recordset 的另一个子句。最终得到的成形 Recordset 有两层,父在上层而子占据下层。

创建子 Recordset 的子句现在可以是任意数量的嵌套形状 COMPUTE 命令,在最深的嵌套命令中包含了参数化查询。所得到的成形 Recordset 有多层,父占据最上层,子占据最下层,而由形状 COMPUTE 命令生成的任意数量 Recordsets 则占据插入的层。

该特性典型的用法是调用合计函数和形状 COMPUTE 命令的分组功能,创建带有有关子 Recordset 的分析信息的插入 Recordset 对象。总之,因为这是参数化 Shape 命令,每当父的子集列被访问时,就可检索新的子 Recordset。因为插入层来源于子,它们也将被重新计算。

www.51windows.Net