数据整理示例

以下数据整理命令演示了如何从 Northwind 数据库中的 Customers 和 Orders 表构建分层 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 章节包含有关给定客户所下订单的所有请求信息。 在此示例中,章节由三列组成:OrderID、OrderDate 和 CustomerID。

生成的经整理的 Recordset 的前两个条目如下:

CustomerID ContactName OrderID OrderDate CustomerID
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 子句对子 Recordset 中的记录进行分组,并针对子 Recordset 中的生成的每个组,将一行添加到父 Recordset。 如果忽略 BY 子句,则子 Recordset 将形成单个组,而父 Recordset 将仅包含一行。 这对于计算整个子 Recordset 的“总计”聚合很有用。

通过 SHAPE 命令构造,还可以以编程方式创建经整理的 Recordset。 随后,可以通过编程方式或通过适当的视觉控件访问 Recordset 的组件。 shape 命令像任何其他 ADO 命令文本一样发出。 有关详细信息,请参阅常规 Shape 命令

无论父 Recordset 以何种方式形成,其都包含一个章节列,用于将其与子 Recordset 相关联。 如果需要,父 Recordset 还可以具有包含子行上的聚合(SUM、MIN、MAX 等)的列。 父 Recordset 和子 Recordset 的列都可以包含 Recordset 中针对行的表达式,也可以是最初为空的新列。

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