VB 版 (精华区)
发信人: zxfsnow (希望的春天), 信区: VB
标 题: 深入ADO7
发信站: 哈工大紫丁香 (2000年06月05日12:36:58 星期一), 转信
发信人: ming (drwxr-x---), 信区: VB
标 题: 深入ADO(7)
发信站: 虎踞龙盘东南站 (Tue Nov 2 10:37:41 1999), 转信
分层目录结构指针和数据成形
如果你处理数据,那么很可能你需要将它从多个表中提取出来。在大多数情况下,你
使用JOIN命令合并相关表中的数据,特别是在你访问关系型数据库的情况下。任何由J
ION命令形成的记录集总是包含了多余的信息。例如,如果你对一个作者的所有书籍感
兴趣的话,你可以合并Authors和Title Author表(我在这里指的是Biblio和PUBS数据
库)。在返回的记录集中,关于作者的信息在每一行中无效地重复。
你合并的嵌套次数越多或越复杂,消除多余信息对于你来说就越重要,分层目录结构
指针允许你以基于树形的逻辑来组织你的记录集。该过程也叫做数据成形,并且它可以
以两种方式来实现。你可以用类似于SQL的成形语言,或者你可以通过使用Visual Stu
dio 6.0的相应的高级工具。我将在后面提供一个例子。现在我们来看看成形语言。
就某方面来说,成形语言显得跟SQL语言类似。
SHAPE {select au_ID, Author from authors}
APPEND ( {select ISBN from [title author]} AS chapter RELATE au_id TO au
_id)
一般说来,SHAPE命令定义记录集,APPEND子句添加一个子记录集到它当中去。换而
言之,记录集可以作为一个域的其他任何数据类型使用。(见图6)。父记录集和子记
录集是通过域与域间的关系实现连接,该关系同样需要一个名称。
Parent Recordset
Au_ID Author Chapter
|
Child Recordset |
|
ISBN
图6: APPEND 记录集
作为数据成形的结果,父记录集附加了新的一列。每行中的新的域都是指向定义在A
PPEND从句中所定义的记录集。子记录集只列举那些au_id值跟父记录集中相同的域的是
匹配的记录。在前面的代码中,如果给出一个作者的ID,那么存在一个记录集,在它当
中有一个叫Chapter的附加的域,它的Value属性是指向一个子记录集,该子记录集中有
来自于Title Autor表的所有所请求的域,在本例中,是ISBN。图7举例说明了一些用于
分层目录结构记录的定位的Visual Basic源代码。注意我是怎样通过名称来访问Chapt
er域。为了得到实际的子记录集,还需要另外一个步骤:调用Value属性。
SHAPE命令也可以嵌套。这意味着你能用其他的SHAPE命令作为APPEND的内部命令。跟
SHAPE语法打交道如同手工书写SQL查询一样也是件烦人的事情。幸运的是,Visual St
udio 6。0给你提供了高级的工具它可以显著地简化SHAPE查询地定义。我将简要地说明
这一点。
APPEND不是唯一一个你可以附在SHAPE命令上的从句。 你还可以改用一个COMPUTE从
句来代替。COMPUTE能让你对已有的行执行统计功能,或按一个或更多的域进行分组。
其预定义的函数有SUM, AVG, MAX和MIN。在最后的记录集里就给出了父行的这些操作
的结果。而且,该记录集也包含了一个引用域,它指向由COMPUTE处理的原始行所在实
际表。是不是觉得不太明白?让我们来看看一个例子。
假设你有个客户定单表。一天,你想知道每个姓是以A开头的客户的定单的总数。
SHAPE {select custID, last name
from orders
where last name like 'A%''}
COMPUTE (SUM(amount)) AS chapter
BY custID
图8说明了结果记录集。你有用户的ID,姓,和订单的总数,除了客户定单的列表引
用外,其它的都是形式非常简单的。
Parent Recordset
CustID LastName SUM Chapter
|
Child Recordset |
Order #1
Order #2
Order #3
Order #4
.
.
.
.
Order #n
图8:COMPUTE 记录集
为在较底的层次上(也就是说,没有用专用工具的情况下)实现数据成形功能,你得
指定你的提供者为MSDataShape。
Dim cnn As New ADODB.Connection
cnn.Provider = “MSDataShape”
cnn.Open “Biblio”
--
每一刻都存在,不一样的精彩
--
以科计为本,以产业报国!
超越自我,飞跃无限!
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.249]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.531毫秒