Data Shaping技术--Shape Append 命令

Shape APPEND 命令将子 Recordset 分配给父 Recordset 中 Field 对象的 Value 属性。

语法

SHAPE {parent-command} [[AS] parent-alias]

APPEND ({child-command} [AS] child-alias

RELATE parent-column TO child-column...) [[AS] chapter-alias] ...

组成说明

该命令的组成部分为:

parent-command, child-command 如下之一。

在尖括号(“{}”)中的查询命令,返回 Recordset 对象。命令发布给基本数据提供者,其语法取决于该提供者的要求。虽然 ADO 并不要求使用任何指定的查询语言,但通常是使用结构化查询语言 (SQL)。圆括号(“()”)是必需的关键字,它们将子集列追加到引用由查询命令返回的 Recordset 的父。

以前成形的 Recordset 的名称。

另一个 Shape 命令。

TABLE 关键字,后跟表的名称。
parent-column 由 parent-command 返回的 Recordset 中的列。

child-column 由 child-command 返回的 Recordset 中的列。

... “parent-column TO child-column”子句实际上是列表,并用逗号将每个定义关系分隔开。

chapter-alias 别名,对追加到父的列的引用。

parent-alias 别名,对父 Recordset 的引用。

child-alias 别名,对子 Recordset 的引用。

... 在 APPEND 关键字后面的子句实际上是列表(每个子句使用逗号分隔),定义被追加到父的另一个列。

操作

发出 parent-command 并返回父 Recordset。然后发出 child-command 并返回子 Recordset。

例如,parent-command 可以从客户表返回公司的客户 Recordset,而 child-command 从定货表返回所有客户的定单 Recordset。

一般,父和子 Recordset 对象必须各自拥有用于关联父和子的列。列在 RELATE 子句中命名,parent-column 在先,child-column 在后。在各自的 Recordset 中,列可以有不同名称,但必须引用相同信息以便指定有意义的关系。例如,Customers 和 Orders Recordsets 可以同时拥有 customerID 字段。

数据构形将子集列追加到父 Recordset。子集列中的值是对子 Recordset 中列的引用,子 Recordset 满足 RELATE 子句。即在给定父行中的 parent-column 与在子集子的所有行中的 child-column 具有相同的值。

当您访问在子集列中的引用时,ADO 将自动检索由引用表示的 Recordset。注意尽管已经检索了全部子 Recordset,但子集(chapter)仅表示行的子集。

如果追加的列没有 chapter-alias,则会自动生成其名称。列的 Field 对象将被追加到 Recordset 对象的 Fields 集合,其数据类型将是 adChapter。

有关定位分级 Recordset 的详细信息,请参阅访问分级 Recordset 中的行。

参数化命令

如果您正在处理大的子 Recordset(尤其是比父 Recordset 大),却只需要访问部分子子集,那么,使用参数化命令会更有效。

non-parameterized command(非参数化命令)同时检索整个父和子 Recordsets,并将子集列追加到父,然后为每个父行指定相关子子集的引用。

parameterized command(参数化命令)检索整个父 Recordset,但在访问子集列时仅检索子集 Recordset。这种检索策略的差别可以有益的性能好处。

例如,可以指定如下:

"SHAPE {SELECT * FROM customer}
APPEND ({SELECT * FROM orders WHERE cust_id = ?}
RELATE cust_id TO PARAMETER 0)"
父和子表通常拥有列名 cust_id。child-command 有占位符(即“?”),受 RELATE 子句引用(即“...PARAMETER 0”)。关系在于显性标识的 customer 表 parent-column(即 cust_id)和隐性标识的 orders 表 child-column(即 cust_id)之间,由占位符和“PARAMETER 0”指定。

注意 PARAMETER 子句仅属于 Shape 命令语法。与 ADO Parameter 属性和 Parameters 集合均无关联。

在执行 Shape 命令时,发生如下情形:

执行 parent-command,并返回 customer 表的父 Recordset。

子集列被追加到父 Recordset。

在访问父行的子集列时,customer.cust_id 列的值将替换 orders.cust_id 的占位符,并执行 child-command。

orders 表(在此,orders.cust_id 列的值与 customer.cust_id 列的值相匹配)的所有行被检索。

对检索到的子行(即子 Recordset 的 chapter)的引用被放置在父 Recordset 当前行的子集列。

当访问另一个行的子集列时,重复步骤 3-5。
插入 Shape COMPUTE 命令

现在将参数化 Shape 命令的参数化命令嵌入任意嵌套数量的形状 COMPUTE 命令中是有效的。例如:

SHAPE {select au_lname, state from authors} APPEND
((SHAPE
(SHAPE
{select * from authors where state = ?} rs
COMPUTE rs, ANY(rs.state) state, ANY(rs.au_lname) au_lname
BY au_id) rs2
COMPUTE rs2, ANY(rs2.state) BY au_lname)
RELATE state TO PARAMETER 0)

Shape Compute 命令

Shape COMPUTE 命令生成父 Recordset(其列由对子 Recordset 的引用组成)、可选的列(其内容是对子 Recordset 或以前成形的 Recordset 执行合计函数的结果)和在可选的 BY 子句中开列出的任何子 Recordset 的列。

语法

"SHAPE {child-command} [AS] child-alias

COMPUTE child-alias [ ,aggregate-command-field-list]

[BY grp-field-list]"

组成说明

该命令的组成是:

child-command 如下之一。

在尖括号(“{}”)中的查询命令,返回 Recordset 对象。命令发布给基本数据提供者,其语法取决于该提供者的要求。虽然 ADO 并不要求使用任何指定的查询语言,但通常是使用结构化查询语言 (SQL)。

以前成形的 Recordset 的名称。

另一个形状(Shape)命令。

TABLE 关键字,后跟表的名称。
child-alias 别名,用于引用由 child-command 返回的 Recordset。在 COMPUTE 子句的列的列表中需要 child-alias,用于定义父和子 Recordset 对象的关系。

aggregate-command-field-list 列表,定义在生成的父中的列,含有对子 Recordset 执行合计函数所产生的值。

grp-field-list 在父和子 Recordset 对象中的列的列表,指定在子中的行如何分组。

对在 grp-field-list 中的每个列,在父和子 Recordset 对象中有对应的列。对父 Recordset 的每个行,grp-field-list 列有唯一的值,并且由父行引用的子 Recordset 由子行(其 grp-field-list 列含有与父行相同的值)单独组成。

如果 COMPUTE 子句包含合计函数,但没有 BY 子句,那么,只有一个父行含有整个子 Recordset 的合计值。如果有 BY 子句,那么,有多个父行均分别含有引用和子 Recordset 的合计值。

操作

child-command 被发布给提供者,并返回子 Recordset。

COMPUTE 子句指定父 Recordset 的列,该 Recordset 可以是对子 Recordset 的引用、一个或多个合计、计算表达式或新列。如果有 BY 子句,那么,它定义的列同时被追加到父 Recordset 中。BY 子句指定子

时间: 2024-08-28 03:25:25

Data Shaping技术--Shape Append 命令的相关文章

Data Shaping技术

Data shaping(又可以被称为分层记录集)如果你对ACCESS非常熟悉的话,它就类似与其中的子表.在你使用VB进行数据库开发的时候是你的最佳选择.这种技术有很强大的运用场合,特别适应与OLTP等企业级运用程序的开发.它允许你使用一种树状结构来表现你的数据,所以它特别适合与来给用户显示有关联的数据表格形式.简单的来说,就是它有一个母表(Recordset)然后该母表中的某个字段中可以再容纳一个子表(Recordset)当然一般来说,该子表中的某一个字段(例如主索引)和母表中的该字段是关联的

ASP3.0给我们带来的新技术之一---Data Shaping技术

Data shaping(又可以被称为分层记录集)如果你对ACCESS非常熟悉的话,它就类似与其中的子表.在你使用VB进行数据库开发的时候是你的最佳选择.这种技术有很强大的运用场合,特别适应与OLTP等企业级运用程序的开发.它允许你使用一种树状结构来表现你的数据,所以它特别适合与来给用户显示有关联的数据表格形式.简单的来说,就是它有一个母表(Recordset)然后该母表中的某个字段中可以再容纳一个子表(Recordset)当然一般来说,该子表中的某一个字段(例如主索引)和母表中的该字段是关联的

Data Shaping技术--数据构形所需的提供者

数据 数据构形一般需要两个提供者.服务提供者 OLE DB 的数据构形服务提供数据构形功能,而数据提供者,例如 SQL Server 的 OLE DB 提供者,则提供充填成形 Recordset 的数据行. 服务提供者的名称可以指定为 Connection 对象 Provider 属性的值,或连接字符串关键字"Provider=". 数据提供者的名称可以指定为"Data Provider"动态属性的值,该动态属性由 Data Shaping Service for

Data Shaping技术--数据构形

数据 ADO 使您能够回答其答案可表示为 Recordset 的提问.例如,假设您要公司客户的列表,而您有包含名为 Customers 的表的数据库.对表发出查询命令,则 ADO 将返回 Recordset,在 Recordset 中每个行表示一个客户,并且每个行的列拥有能够包含客户的名称.地址.客户 ID 等内容的数据类型. "数据构形"使您能够回答其答案可由成形的 Recordset 表示的提问.数据构形定义成形 Recordset 的列.由列表示条目之间的关系和数据充填到 Rec

Data Shaping技术--访问分级 Recordset 中的行

访问 以下范例说明了访问分级 Recordset 中的行的所需步骤: authors 和 titleauthors 表中的 Recordset 对象通过 author ID 进行关联. 外循环显示每个作者的姓名.州/省别和身份. 每行所追加的 Recordset 都从 Fields 集合进行检索并分配给 rstTitleAuthor. 内循环显示追加的 Recordset 中每行的四个字段. (StayInSync 属性是为了说明而设置为 FALSE 的,以便您可以在每次外循环中显性地看见子集更

数据库技术:SPOOL命令使用实例

首先介绍一下spool的参数含义 SET echo off              --在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句: SET feedback off          --是否回显本次sql命令处理的记录条数,缺省为on: SET heading  off          --是否显示列标题,缺省为on: SET pagesize 50000        --设置每页有多少行数,缺省为14.当值设为0时,输出内容为一页且不显示列标题,为了避

批处理技术内幕 ECHO命令介绍_DOS/BAT

众所周知,如果echo后面跟一个环境变量,但是该变量却为空时,相当于不加任何参数的echo,即输出当前echo是on还是off.很多文章或者教程给出的解决方案都是在echo后面加一个点号echo.,这样就会输出空行. 复制代码 代码如下: @echo off echo %demon.tw% :: ECHO is off. echo.%demon.tw% pause据我所知,用echo输出空行至少有十种方法: 复制代码 代码如下: @echo off echo= echo, echo; echo+

ASP3.0中的流控制能力一[转]

asp3|控制 随着PHP4.0和JSP技术的推出以及IIS中不断出现的重大的安全问题,MicroSoft的ASP的市场仿佛是变的狭窄了,但是MicroSoft是不会轻言放弃的,于是在ASP2.0的基础上推出了ASP3.0,增加了一些新的功能:新的流控制能力.Data Shaping技术(请参考:http://www.aspcn.com/showarticle.asp?id=28).无脚本 ASP .更多的组件选择.xml的支持.脚本组件.ASP脚本代码的加密技术等等.其实笔者认为没有多大的改变

ASP3.0中的流控制能力(1)

asp3|控制 ASP3.0中的流控制能力 2000-11-20· xuankong·yesky 随着PHP4.0和JSP技术的推出以及IIS中不断出现的重大的安全问题,MicroSoft的ASP的市场仿佛是变的狭窄了,但是MicroSoft是不会轻言放弃的,于是在ASP2.0的基础上推出了ASP3.0,增加了一些新的功能:新的流控制能力.Data Shaping技术(请参考:http://www.aspcn.com/showarticle.asp?id=28).无脚本 ASP .更多的组件选择