資料定型在asp中的應用

來源:互聯網
上載者:User

資料定型是定義一個定型記錄集的過程,定性記錄集我們可以認為是一個層次記錄集,層次記錄集分為三種:

關係層次,參數化層次,分組層次。

我認為這種技術的最大優點是:沒有資料冗餘,介面顯示清晰簡單,對於多層資料操作更便利

要嚮應用這個技術,需要將資料驅動連接字串中的Provider設定為:MSDataShape

具體應用需要Shape命令:並有兩種不同的shape語句:

一、shape{sql1} append({sql2} as ?? relate a to b)

他的工作方式就是:首先查詢sql1,然後再根據 relate a to b指定的條件查詢sql2,然後在sql1檢索結果的後面分別添加一個欄位,分別用於儲存相應的sql2查詢結果的記錄集,也就是說sql1查詢結果為父記錄集,sql2查詢結果為子記錄集。

  這種方式還分為兩種:關係層次和參數化層次

  關係層次例子:Shape{select a,b from  t1} append({select m,n from  t2}  relate a=m)

 參數化層次的例子:shape{select a,b from t1} append({select m,n from t2 where m=?} relate a to Parameter 0)

可見,在參數化層次中,有一個where m=? 和一個parameter 0

這個的功能起始和上一個關係層次一樣,只是工作原理不同而已,這種情況下,資料不是一次栽入,只檢索父記錄集上的資料,子記錄集只有在你顯示的開啟基於章節欄位的一個記錄集時,才檢索。  

例子:

<%

Set Db = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
mmm="driver={SQL Server};server=192.1.1.21;uid=sa;pwd=myself;database=gwjp2"
db.Provider="MSDataShape"
db.Open mmm

rs.Open "shape{select name,id from tgw} append({select name,gwid from tren} as liu relate id to gwid) AS liu",db,3,1

Response.Write rs.RecordCount
Response.Write "<hr>"
do while not rs.EOF 
            Response.Write "崗位名:" & rs(0)
             set qq=rs("liu").value
        Response.write "<br> 記錄數  " &   qq.recordcount & ":<br>"
        do while not qq.eof
            for i=0 to qq.fields.count-1
              Response.Write qq(i) & " | "
            next
            Response.Write "<br>"
            qq.movenext
        loop
        Response.Write "<br>"
      Response.Write "<hr>"
   rs.MoveNext
loop
%>

  執行結果為:

42
--------------------------------------------------------------------------------
崗位名:網路系統管理B
記錄數 0:

--------------------------------------------------------------------------------
崗位名:應用軟體開發J
記錄數 2:
姓名1 | 9 | 
姓名2 | 9 |

--------------------------------------------------------------------------------
崗位名:股市分析
記錄數 0:

--------------------------------------------------------------------------------
崗位名:複印工
記錄數 4:
姓名3 | 68 |
姓名4 | 68 |
姓名5 | 68 |
姓名6 | 68 |

--------------------------------------------------------------------------------
崗位名:巡守員B
記錄數 1:
姓名7 | 69 |

--------------------------------------------------------------------------------
崗位名:售後服務站主任H
記錄數 1:
姓名8 | 111 |

--------------------------------------------------------------------------------
崗位名:現場技術診斷D
記錄數 1:
姓名9 | 121 |

--------------------------------------------------------------------------------
崗位名:現場技術診斷G
記錄數 3:
姓名10 | 123 |
姓名11 | 123 |
姓名12 | 123 |

--------------------------------------------------------------------------------
崗位名:執法監察B
記錄數 0:

--------------------------------------------------------------------------------
崗位名:清掃
記錄數 3:
姓名13 | 152 |
姓名14 | 152 |
姓名15 | 152 |

--------------------------------------------------------------------------------
崗位名:品質體系
記錄數 1:
姓名16 | 160 |

--------------------------------------------------------------------------------
崗位名:外協件檢驗B
記錄數 2:
姓名17 | 206 |
姓名18 | 206 |

--------------------------------------------------------------------------------
崗位名:機電配件檢驗C
記錄數 2:
姓名19 | 207 |
姓名20 | 207 |

--------------------------------------------------------------------------------
崗位名:調研秘書D
記錄數 1:
姓名21 | 216 |

--------------------------------------------------------------------------------
崗位名:政策研究B
記錄數 0:

--------------------------------------------------------------------------------
崗位名:打字複印C
記錄數 1:
姓名22 | 280 |

--------------------------------------------------------------------------------
崗位名:庫房管理
記錄數 4:
姓名23 | 485 |
姓名24 | 485 |
姓名25 | 485 |
姓名26 | 485 |

--------------------------------------------------------------------------------
崗位名:財務分析
記錄數 0:

--------------------------------------------------------------------------------
崗位名:綠化技術管理A
記錄數 1:
姓名27 | 560 |

--------------------------------------------------------------------------------
崗位名:綠化技術管理B
記錄數 3:
姓名28 | 592 |
姓名29 | 592 |
姓名30 | 592 |

--------------------------------------------------------------------------------
崗位名:總值班調度D
記錄數 3:
姓名31 | 627 |
姓名32 | 627 |
姓名33 | 627 |

--------------------------------------------------------------------------------
崗位名:生產調度L
記錄數 2:
姓名34 | 628 |
姓名35 | 628 |

--------------------------------------------------------------------------------
崗位名:環境檢測化驗A
記錄數 1:
姓名36 | 651 |

--------------------------------------------------------------------------------
崗位名:環境檢測化驗B
記錄數 2:
姓名37 | 652 |
姓名38 | 652 |

--------------------------------------------------------------------------------
崗位名:資產管理A
記錄數 2:
姓名39 | 665 |
姓名40 | 665 |

--------------------------------------------------------------------------------
崗位名:能源外購與外聯
記錄數 1:
姓名41 | 667 |

--------------------------------------------------------------------------------
崗位名:能源監察與仲裁
記錄數 5:
姓名42 | 682 |
姓名43 | 682 |
姓名44 | 682 |
姓名45 | 682 |
姓名46 | 682 |

--------------------------------------------------------------------------------
崗位名:東門警衛F-I
記錄數 7:
姓名47 | 747 |
姓名48 | 747 |
姓名49 | 747 |
姓名50 | 747 |
姓名51 | 747 |
姓名52 | 747 |
姓名53 | 747 |

--------------------------------------------------------------------------------
崗位名:南門警衛G-I
記錄數 5:
姓名54 | 749 |
姓名55 | 749 |
姓名56 | 749 |
姓名57 | 749 |
姓名58 | 749 |

--------------------------------------------------------------------------------
崗位名:物資門警衛I
記錄數 1:
姓名59 | 751 |

--------------------------------------------------------------------------------
崗位名:西門警衛H,I
記錄數 2:
姓名60 | 753 |
姓名61 | 753 |

--------------------------------------------------------------------------------
崗位名:地變看車點警衛B
記錄數 1:
姓名62 | 757 |

--------------------------------------------------------------------------------
崗位名:南外門警衛
記錄數 3:
姓名63 | 759 |
姓名64 | 759 |
姓名65 | 759 |

--------------------------------------------------------------------------------
崗位名:專用線門警衛B-D
記錄數 7:
姓名66 | 761 |
姓名67 | 761 |
姓名68 | 761 |
姓名69 | 761 |
姓名70 | 761 |
姓名71 | 761 |
姓名72 | 761 |

--------------------------------------------------------------------------------
崗位名:後勤服務B
記錄數 3:
姓名73 | 763 |
姓名74 | 763 |
姓名75 | 763 |

--------------------------------------------------------------------------------
崗位名:經營預算計劃
記錄數 0:

--------------------------------------------------------------------------------
崗位名:資產經營管理
記錄數 1:
姓名76 | 805 |

--------------------------------------------------------------------------------
崗位名:金相檢驗與分析
記錄數 2:
姓名77 | 806 |
楊影 | 806 |

--------------------------------------------------------------------------------
崗位名:巡守員
記錄數 1:
姓名78 | 807 |

--------------------------------------------------------------------------------
崗位名:管庫
記錄數 3:
姓名79 | 808 |
姓名80 | 808 |
姓名81 | 808 |

--------------------------------------------------------------------------------
崗位名:北京項目部業務主辦A
記錄數 2:
姓名83 | 809 |
姓名83 | 809 |

--------------------------------------------------------------------------------
崗位名:晒圖工C-J
記錄數 3:
姓名84 | 810 |
姓名85 | 810 |
姓名86 | 810 |

二、shape{sql1} as a1 compute a1 by groupfieldlist

他的工作方式是:將sql1的查詢結果根據groupfieldlist進行分組,每組單獨成立一個字記錄集。父記錄集的第一個欄位存放對應的子記錄集的指標,父記錄集的其他欄位儲存相應的groupfieldlist的值。

例子如下:

<%
Set Db = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
mmm="driver={SQL Server};server=192.1.1.21;uid=sa;pwd=myself;database=gwjp2"
db.Provider="MSDataShape"
db.Open mmm

rs.Open "shape{select dwname, gwlevel from tzl order by dwname } as ddd compute ddd  by dwname,gwlevel",db,3,1
Response.Write rs.RecordCount
Response.Write "<hr>"
do while not rs.EOF
   
   tt=""
   for i=1 to rs.Fields.count-1
      tt= tt & "  " & rs(i)
   next
   set qq=rs(0).Value
   response.write "<font color=ff0000>" & tt & "   ---------  "  & qq.recordcount & "<br></font>"
   do while not qq.eof
        for i=0 to qq.fields.count-1
           Response.Write qq(i) & "===="
        next
        Response.Write "<br>"
        qq.movenext
   loop
   Response.Write "<hr>"
   rs.MoveNext
loop
%>

 

執行結果為:

24
--------------------------------------------------------------------------------
xx公司 生產製造部 13 --------- 2
xx公司 生產製造部====13====
xx公司 生產製造部====13====

--------------------------------------------------------------------------------
xx公司 生產製造部 35 --------- 2
xx公司 生產製造部====35====
xx公司 生產製造部====35====

--------------------------------------------------------------------------------
xx公司 生產製造部 39 --------- 2
xx公司 生產製造部====39====
xx公司 生產製造部====39====

--------------------------------------------------------------------------------
xx公司 市場一部 9 --------- 1
xx公司 市場一部====9====

--------------------------------------------------------------------------------
xx公司 市場一部 14 --------- 1
xx公司 市場一部====14====

--------------------------------------------------------------------------------
xx公司 市場一部 37 --------- 1
xx公司 市場一部====37====

--------------------------------------------------------------------------------
xx公司 市場一部 40 --------- 1
xx公司 市場一部====40====

--------------------------------------------------------------------------------
xx公司 市場一部 45 --------- 1
xx公司 市場一部====45====

--------------------------------------------------------------------------------
xx公司 資產運營部 9 --------- 1
xx公司 資產運營部====9====

--------------------------------------------------------------------------------
xx公司 資產運營部 39 --------- 2
xx公司 資產運營部====39====
xx公司 資產運營部====39====

--------------------------------------------------------------------------------
xx公司 資產運營部 41 --------- 1
xx公司 資產運營部====41====

--------------------------------------------------------------------------------
xx公司 綜合保障部 9 --------- 1
xx公司 綜合保障部====9====

--------------------------------------------------------------------------------
xx公司 綜合保障部 14 --------- 4
xx公司 綜合保障部====14====
xx公司 綜合保障部====14====
xx公司 綜合保障部====14====
xx公司 綜合保障部====14====

--------------------------------------------------------------------------------
xx公司 綜合保障部 15 --------- 1
xx公司 綜合保障部====15====

--------------------------------------------------------------------------------
xx公司 綜合保障部 17 --------- 6
xx公司 綜合保障部====17====
xx公司 綜合保障部====17====
xx公司 綜合保障部====17====
xx公司 綜合保障部====17====
xx公司 綜合保障部====17====
xx公司 綜合保障部====17====

--------------------------------------------------------------------------------
xx公司 綜合保障部 18 --------- 3
xx公司 綜合保障部====18====
xx公司 綜合保障部====18====
xx公司 綜合保障部====18====

--------------------------------------------------------------------------------
品質保證部 計量處 15 --------- 1
品質保證部 計量處====15====

--------------------------------------------------------------------------------
品質保證部 品質管理處 26 --------- 2
品質保證部 品質管理處====26====
品質保證部 品質管理處====26====

--------------------------------------------------------------------------------
品質保證部 品質管理處 41 --------- 1
品質保證部 品質管理處====41====

--------------------------------------------------------------------------------
企業管理部 資訊中心 41 --------- 1
企業管理部 資訊中心====41====

--------------------------------------------------------------------------------
研發中心 城軌客車開發部 9 --------- 1
研發中心 城軌客車開發部====9====

--------------------------------------------------------------------------------
研發中心 檔案館 9 --------- 1
研發中心 檔案館====9====

--------------------------------------------------------------------------------
研發中心 檔案館 16 --------- 1
研發中心 檔案館====16====

--------------------------------------------------------------------------------
研發中心 檔案館 18 --------- 1
研發中心 檔案館====18====

 

  總結:上面的例子非常膚淺,主要是用於入門之用,實際上這些層次可以非常複雜,我們這裡一般用不到那麼複雜的。如果需要,可以查閱一些資料,但是我嘗試編寫複雜的層次,但是沒有成功,遇到了一些以前沒有見到又沒有辦法解決的問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.