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

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

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

在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的语句就能够做成树状结构的收起和展开效果了。

标签:视图,结构,树,asp
0
投稿

猜你喜欢

  • python+opencv+selenium自动化登录邮箱并解决滑动验证的问题

    2021-10-01 07:32:18
  • FrontPage2002简明教程八:站点的管理

    2008-09-17 11:36:00
  • python常用的魔法方法(双下划线)

    2022-08-01 23:23:37
  • Go语言多值替换的HTML模板实例分析

    2024-05-02 16:25:02
  • 需要掌握的八个CSS布局技巧

    2008-05-17 11:45:00
  • python下PyGame的下载与安装过程及遇到问题

    2021-09-24 00:12:15
  • Python切片用法实例教程

    2023-09-28 15:26:17
  • sqlserver isnull在数据库查询中的应用

    2011-12-01 10:30:25
  • 远程连接mysql数据库注意事项记录(远程连接慢skip-name-resolve)

    2024-01-15 23:06:01
  • mysql 5.7.13 解压缩版(免安装)安装配置教程

    2024-01-24 01:13:28
  • python绘制堆叠条形图介绍

    2021-07-01 23:12:36
  • Vue3 通过作用域插槽实现树形菜单嵌套组件

    2024-05-28 15:42:28
  • Python中的startswith和endswith函数使用实例

    2022-06-19 00:47:55
  • Pytorch之8层神经网络实现Cifar-10图像分类验证集准确率94.71%

    2022-03-03 21:14:36
  • pandas Dataframe行列读取的实例

    2021-06-11 01:00:45
  • Fibonacci数,Θ(log n)

    2010-03-28 13:28:00
  • SQL语句练习实例之五 WMS系统中的关于LIFO或FIFO的问题分析

    2024-01-16 06:47:26
  • OpenCV 表盘指针自动读数的示例代码

    2023-12-29 05:46:38
  • 给textarea增加长度限制的几种方法

    2009-06-04 12:27:00
  • django创建简单的页面响应实例教程

    2021-05-15 17:05:08
  • asp之家 网络编程 m.aspxhome.com