关系层次结构

您可以基于 command 数据使用数据环境设计器将两个或多个 Command 对象关联在一起。其概念与使用一个 SQL SELECT 语句将两个相关的表联结在一起相似。但是,运行时的结果是一组层次结构记录集而不是一个平面表格。这种类型的层次结构称为一个关系层次结构。

一个关系层次结构是由一个父 Command 对象和一个或多个子 Command 对象组成的,这些子对象通过父对象的 Field 对象与子对象的字段和/或参数的链接而相互关联。在一个关系层次结构中,子 Command 对象变成了父 Command 对象中的字段。

例如,您可能希望在一个 Customers 和 Orders 表之间创建一个关系层次结构。通过基于 CustID 字段将 Orders 表和 Customers 表关联,Orders 记录集变成 Customers 记录集的一个字段。因此,每一行中这个字段的值变成一个对记录集的引用,该记录集中包含那个特定 Customer 的所有 Orders。下面的图片举例说明了这种情况。

注意 在关系层次结构中使用的所有 Command 对象必须与相同的 Connection 对象相关联。您不能从两个不同的数据库关联 Command。

有关关系层次结构的详细信息,请参阅 Data Shaping

从两个现存的 Command 对象创建一个关系层次结构

当在数据环境“概要”视图中有两个处于同一级的 Command 对象时,您可以按照下面过程描述的那样创建一个关系层次结构。

注意 包括在一个关系层次结构中的 Command 对象应当是记录集返回的。如果不是,在“Command 属性”对话框的“高级”选项卡中选择“返回的记录集”,并单击“确定”将更改应用于 Command 对象。

要从两个现存的 Command 对象创建一个关系层次结构,请按照以下步骤执行:

  1. 右键单击将成为关系中子对象的 Command 对象,然后单击快捷方式菜单中的“属性”打开“Command 属性”对话框。

  2. 选择“关联”选项卡,然后选择“与父命令对象相关联”。

  3. 在“父命令”框中,选择父 Command 对象的名字。除了当前 Command 对象的子 Command 对象外,所有与同一个 Connection 相关联的 Command 对象都被显示。

  4. 按下面所示定义两个 Command 对象之间的关系:
    项目 描述
    Parent Fields 从父 Command 对象中选择一个字段。当被添加时,它显示在关系表达式的左边。
    Child Fields/Parameters 从子 Command 对象中选择一个字段或参数。当被添加时,它显示在关键字表达式的右边。

    注意 您必须将所有必需的参数链接到父 Command 对象中的字段。如果必需的参数没有被链接,该层次结构不能被正确地执行。

    Add 在您完成从“父字段”和“子字段/参数”列表中选择之后,单击“添加”。新的关系对显示在“关联定义”关系表达式中(例如,CustomerID TO CustomerID)。根据需要,重复这个过程直到您定义了所有的关系。

    注意 您应当在包含相似数据的字段上将两个 Command 对象相关联。例如,如果一个 Command 对象从一个 Orders 表中返回数据,另一个从一个 Customers 表中返回数据,您应当使用在两个表中都存在的一个字段,例如 orderID。

    Remove 要删除一个关系对,在显示区域中选择该对,并单击“移除”。

  5. 单击“确定”接受此关系定义,并关闭该对话框。

    注意 当您将任何两个 Command对象相关联时,数据环境设计器不检查有效输入。因此,如果您指定了一个无效的关系,获取的数据可能不是您所期望的。

一旦一个关系被建立,您就可以使用Microsoft Hierarchical FlexGrid 控件将数据作为一个层次结构来显示。

从一个父 Command 对象创建一个子 Command 对象

直接构造一个关系层次结构的简便方法是从父 Command 对象创建一个子 Command 对象。要直接创建一个子 Command 对象,首先要创建父 Command 对象,如 Command 对象中描述的那样,然后执行下面的过程。

注意 包括在一个关系层次结构中的 Command 对象应当是记录集返回的。如果不是,在“Command 属性”属性对话框的“高级”选项卡中选择“返回的记录集”,并且单击“确定”将此更改应用于 Command 对象。

要从一个父 Command 对象创建一个子 Command 对象,请按照以下步骤执行:

  1. 在数据环境工具栏中,单击“添加子命令”。

    -或–

    右键单击父 Command 对象,并单击快捷方式菜单中的“添加子命令”打开“Command 属性”对话框。

    注意 与子 Command 和父 Command 对象相关联的 Connection 对象是相同的。

  2. 子 Command 的缺省“命令名称”(在“Command 属性”对话框的“通用”选项卡中显示)是将被追加到父 Command 对象的 Field 对象的名字。您可以将这个名字更改为一个更有意义的、唯一的名字。例如,如果它是基于一个叫做“Orders”的数据库对象,您可能希望命名此子对象为“Orders”。

    注意 在“Command 属性”对话框的“通用”选项卡中,“连接”是无效的。这是因为子 Command 对象和父 Command 对象必须与相同的 Connection 对象相关联。

  3. 选择“关联”选项卡,通过指定包含共同数据的每一个 Command 对象的字段或参数来定义关系。

  4. 单击“确定”创建子 Command 对象,并关闭该对话框。如果子 Command 对象被成功地创建,它将出现在数据环境“概要型”视图中它的父对象下面。