网络编程
位置:首页>> 网络编程>> Asp编程>> asp如何做一个树状展开视图来显示自己的记录结构?

asp如何做一个树状展开视图来显示自己的记录结构?

  发布时间:2010-07-12 18:56:00 

标签:视图,结构,树,asp

如何做一个树状展开视图来显示自己的记录结构?

在SQL中,如何做一个可收起和展开树状结构图?就是资源管理器左栏的那种效果。

这要用到Data shaping(又可以被称为分层记录集)。Data shaping允许我们使用一种树状视图来显示自己的记录结构,及给用户显示有关联的数据表格形式。这极大地提高了ASP连接数据库程序的能力,是使用VB进行OLTP等企业级运用程序开发的最佳选择。

它有一个母表(Recordset),该母表中的某个字段中还可以再容纳一个子表(Recordset),一般地,该子表中的某一个字段(例如主索引)和母表中的该字段是相关联的(relationship)。这便于在执行一个查询后,将返回一个多记录集。

首先,我们应安装MSDataShape OLEDB Provider,并会使用Shape语言(具体的语法可参阅Access的帮助文件。来看一个只有一个子表文件代码:
aspshape.asp

<%
Dim rsPublishers
Dim rsTitles
Dim strShapeConn
Dim strShape
Dim strConn
strConn = "Provider=SQLOLEDB;Data Source=Kanga;" &_
" Initial Catalog=pubs;User Id=sa;Passwprd="
Set rsPublishers = Server.CreateObject("ADODB.RecordSet")
strShapeConn = "Provider=MSDataShape; Data " & strConn
strShape = "SHAPE {SELECT * FROM Publishers}" & _
" APPEND ({SELECT * FROM Titles}" & _
" RELATE Pub_ID TO Pub_ID) AS rsTitles"

rsPublishers.Open strShape,strShapeConn
Response.Write "<UL>"
While Not rsPublishers.EOF
Response.Write "<LI>" & rsPublishers("Pub_Name")
Response.Write "<UL>"
' 下面开始显示子表的数据
Set rsTitles = rsPublsihers("rsTitles").Value
While Not rsTitles.EOF
Response.Write "<LI>" & rsTitles("title")
rsTitles.MoveNext
Wend
Response.Write "</UL>"
rsPublishers.MoveNext
Wend
Response.Write "</UL>"
rsPublishers.Close
Set rsPublishers = Nothing
Set rsTitles = Nothing
%>

如果数据表里只有一个子表,尚不能充分显示Data Shaping技术的优势(SQL就能完成嘛),但如果母表中同时有多个字段,并和其它的表有关联的话,我们就可以看到Data Shaping的长处了。先举一个含有两个子表的例子:

SHAPE {SELECT * FROM Publishers}
APPEND ({SELECT * FROM Titles}
RELATE Pub_ID TO Pub_ID) AS rsTitles,
({SELECT * FROM Employee}
RELATE Pub_ID TO Pub_ID) AS rsEmployees

再看看Data Shaping如何处理数据表中的子表还套有子表(层状结构的记录集)时的复杂情况,下面是一个两层子表的例子:

SHAPE {SELECT * FROM Publishers}
APPEND (( SHAPE {SELECT * FROM Titles}
APPEND ({SELECT * FROM Sales}
RELATE Title_ID TO Title_ID) AS rsSales)
RELATE Pub_ID TO Pub_ID) AS rsTitles

Data Shaping让一切变得简单,现在我们只要再添加几个DHTML的语句就能够做成树状结构的收起和展开效果了。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com