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的语句就能够做成树状结构的收起和展开效果了。
猜你喜欢
- 一、为什么要包管理默认Go的第三方包都是放在Gopath的src目录下,而且这些包都没有版本号的概念,这样的可能会出现一些问题。举个例子:当
- 其实这个问题落伍谈了n次了其中care4也说了两次所以如果你有问题最好先搜索一下 说不定问题早有人解决了http://www.im286.c
- 关于一些代码里的解释,可以看我上一篇发布的文章,里面有很详细的介绍!!!可以依次把下面的代码段合在一起运行,也可以通过jupyter not
- php开启openssl的方法,大多数情况下openssl是没有开启的,要想启用需要进行下简单的设置windows下开启方法:1: 首先检查
- 开源监控系统 Prometheus 集成了跟踪多种类型的时间序列数据,但如果没有集成你想要的数据,那么很容易构建一个。一个经常使用的例子使用
- 前言在Django的前后端分离项目中DRF(Django Restframe Work)框架无疑是首选,关于token验证一般使用的是JWT
- 项目一开始的设计很重要,django中app的名称建议用小写我的博客由两个app组成,Blog和JiaBlog,总觉得不美观,想改成小写的o
- 一种小技巧,可以让python捕获信号量HUP 然后当使用 kill 发起HUP信号量的时候 捕获到进行处理,可以处理为重新读取配置文件并重
- 一起画图吧为什么突然想搞这个画图软件呢不瞒各位,是因为最近接到了一个很小很小很小小得不能再小的小项目就是基于Tkinter,做一个简易的画图
- 1. 安装依赖将PyTorch模型转换为ONNX格式可以使它在其他框架中使用,如TensorFlow、Caffe2和MXNet首先安装以下必
- 1. Series相当于数组numpy.array类似s1=pd.Series([1,2,4,6,7,2])s2=pd.Series([4,
- 目录1.获取所有顶层窗口2.手动选择需要设置老板键的程序3.隐藏或显示选中程序4.设置显示隐藏快捷键5.最终效果主要实现目标:为多个指定的程
- 两种方法,一种是为表空间增加数据文件: alter tablespace users add datafile '/opt/orac
- 在setup()钩子函数中调用父组件<template><div> &nb
- 一、安装Bautiful Soup 是第三方库,因此需要单独下载,下载方式非常简单由于 BS4 解析页面时需要依赖文档解析器,所以还需要安装
- inspect模块用于收集python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈,对对象进行类型检查等等,有几个好用的方法:D
- 定义返回单值def my_abs(x): if x >= 0: return x &
- JSON 基础简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,
- lstm(*input, **kwargs)将多层长短时记忆(LSTM)神经网络应用于输入序列。参数:input_size:输入'x
- 最近开始学习Qt,结合之前学习过的caffe一起搭建了一个人脸识别登录系统的程序,新手可能有理解不到位的情况,还请大家多多指教。我的想法是用