数据整形 ============= 数据整形或分层的记录集能显示一个树状结构或相关记录。 应用数据整形必须:
1。使用MSDataShape OLEDB提供者
Provider=MSDataShape;Data Provider=SQLOLEDB;DATA Source=..... 比较简洁的方式如下: 连接字符串: strCon="Provider=SQLOLEDB;Data source=servername;"&_ "Initial Catalog=defaultsql;User Id=sa;Password=" 构建MSDataShape OLEDB连接 strCon="Provider=MSDataShape;Data="&strCon
2。使用一种特殊的整形语言,它是SQL的一种扩充,允许构造层次。
(1)整形语言的语法: SHAPE{parent command} [AS parent alias] APPEND({child command} [AS child alias] RELATE parent_column TO child_column) [AS parent_column_name]
EXAMPLE: 以PUBS库的Publishers和Titles为例
SHAPE{SELECT * FROM Publishers} APPEND({SELECT * FROM Titles} RELATE Pub_ID TO Pub_ID) AS rsTitles
在该例中,第一行是父记录集,第二行是子记录集,第三行指明关联父、子记录集 的两个字段,两个标中都有一个名为Pub_ID的字段。该命令返回一个包含出版社的 记录集,通过AS子句了一个含有子记录集的新列(rsTitles)。
3。在ASP里使用数据整形
如何访问上面例子中的Titles记录集呢? Set rsTitles=rsPublishers("rsTitles").value 一个完整的遍历记录集的例子:
<% dim rsPublishers dim rsTitles dim strShapeConn dim strShape Dim strConn
strConn = "Provider=SQLOLEDB; Data Source=" & _ Request.ServerVariables("SERVER_NAME") & _ "; Initial Catalog=pubs; User ID=sa; Password=" set rsPublishers=server.CreatObject("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")
' now the titles Response.Write "<UL>" '设置变量rsTitles只想记录的value值 Set rsTitles = rsPublishers("rsTitles").Value
' loop through the titles While Not rsTitles.EOF Response.Write "<LI>" & rsTitles("title") rsTitles.MoveNext Wend Response.Write "</UL>"
' move to the next publisher rsPublishers.MoveNext Wend Response.Write "</UL>"
rsPublishers.Close Set rsPublishers = Nothing Set rsTitles = Nothing %> -------------------------------------------------------------- china&boy整理 转自:《ASP3高级编程》
|