数据整形示例

以下数据整形命令演示如何从 Northwind 数据库中的 CustomersOrders 表创建一个分层的 Recordset

SHAPE {SELECT CustomerID, ContactName FROM Customers}   
APPEND ({SELECT OrderID, OrderDate, CustomerID FROM Orders} AS chapOrders   
RELATE customerID TO customerID)   

当此命令用于打开 Recordset 对象(如 Visual Basic 数据整形示例中所示),它将为从 Customers 表返回的每个记录创建一章(chapOrders)。 本章包含从 Orders 表中返回的 Recordset 子集。 chapOrders 章包含有关给定客户下订单的所有请求信息。 在此示例中,该章由三列组成:OrderIDOrderDate,以及 CustomerID

结果形成的 Recordset 的前两个条目如下所示:

客户ID 联系姓名 订单编号 订单日期 客户ID
ALFKI Maria Ander 10643

10692

10702

10835

10952

11011
1997-08-25

1997-10-03

1997-10-13

1998-01-15

1998-03-16

1998-04-09
ALFKI

ALFKI

ALFKI

ALFKI

ALFKI

ALFKI
ANATR Ana Trujillo 10308

10625

10759

10926
1996-09-18

1997-08-08

1997-11-28

1998-03-04
ANATR

ANATR

ANATR

ANATR

在 SHAPE 命令中,使用 APPEND 通过 RELATE 子句创建与父 Recordset 相关的子 Recordset(这与前面所讨论的、在 SHAPE 关键字之后的提供程序特定命令相关联)。 父级和子级通常至少有一个共同列:父级一行中列的值与子级所有行中的列的值相同。

第二种方法是使用 SHAPE 命令:即从子 Recordset生成父 Recordset。 子记录集 中的记录通常通过使用 BY 子句进行分组,然后将每个生成组在父记录集 中添加一行。 如果省略 BY 子句,则子 Recordset 将形成一个组,父 Recordset 将仅包含一行。 这对于计算整个子 Recordset的“总计”聚合非常有用。

SHAPE 命令结构还使您能够以编程方式创建结构化的 Recordset。 然后,可以通过编程方式或通过适当的图形控件访问 记录集的 组件。 形状命令的发出方式与其他 ADO 命令文本相同。 有关详细信息,请参阅常规 形状命令。

无论采用哪种方式形成父 Recordset,它都将包含一个章节列,用于将其与子 Recordset相关联。 如果需要,父 Recordset 还可以在子行上包含聚合(SUM、MIN、MAX 等)的列。 父 Recordset 和子 Recordset 皆可包含在 Recordset行上的表达式列,以及最初为空的新列。

本部分继续介绍以下主题。