亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Access2000數據庫80萬記錄通用快速分頁類

2019-11-18 19:26:02
字體:
來源:轉載
供稿:網友

    主要思路: 用一條語句統計(Count)出記錄數(而不在查詢時獲得 RecordCount 屬性), 緩存在 Cookies 中, 跳轉時就不用再次統計. 使用 ADO 的 AbsolutePage 屬性進行頁面跳轉即可. 為方便調用而寫成類, 代碼主要地方已有說明

硬件環境: AMD Athlon XP 2600+, 256 DDR
軟件環境: MS Windows 2000 Advanced Server + IIS 5.0 + access 2000 + IE 6.0
測試結果: 初次運行在 250(首頁) - 400(末頁)毫秒, (記錄數緩存后)在頁面間跳轉穩定在 47 毫秒以下.第1頁跳到最后一頁不多于 350 毫秒

適用范圍: 用于普通分頁. 不適用于有較復雜的查詢時: 如條件為"[Title] Like '%最愛%'", 查詢的時間大大增加, 就算 Title 字段作了索引也沒用. :(
<%@LANGUAGE = "VBScr<%Option Explicit%>
<%
 Dim intDateStart
 intDateStart = Timer()
 Rem ## 打開
數據庫連接
 Rem #################################################################
  function f__OpenConn()
   Dim strDbPath
   Dim connstr
   strDbPath = "../db/test.mdb"
   connstr  = "PRovider=Microsoft.Jet.OLEDB.4.0;Data Source="
   connstr  = connstr & Server.MapPath(strDbPath)
   Set conn  = Server.CreateObject("Adodb.Connection")
   conn.open connstr
  End function
 Rem #################################################################
 
 Rem ## 關閉數據庫連接
 Rem #################################################################
  function f__CloseConn()
   If IsObject(conn) Then
    conn.close
   End If
   Set conn = nothing
  End function
 Rem #################################################################
 Rem 獲得執行時間
 Rem #################################################################
 function getTimeOver(iflag)
  Dim tTimeOver
  If iflag = 1 Then
   tTimeOver = FormatNumber(Timer() - intDateStart, 6, true)
   getTimeOver = " 執行時間: " & tTimeOver & " 秒"
  Else
   tTimeOver = FormatNumber((Timer() - intDateStart) * 1000, 3, true)
   getTimeOver = " 執行時間: " & tTimeOver & " 毫秒"
  End If
 End function
 Rem #################################################################
 Class Cls_PageView
  Private sbooInitState
  Private sstrCookiesName
  Private sstrPageUrl
  Private sstrPageVar
  Private sstrTableName
  Private sstrFieldsList
  Private sstrCondiction
  Private sstrOrderList
  Private sstrPrimaryKey
  Private sintRefresh
 
  Private sintRecordCount
  Private sintPageSize
  Private sintPageNow
  Private sintPageMax
 
  Private sobjConn
 
  Private sstrPageInfo
 
  Private Sub Class_Initialize
   Call ClearVars()
  End Sub
  
  Private Sub class_terminate()
   Set sobjConn = nothing
  End Sub
 
  Public Sub ClearVars()
   sbooInitState = False
   sstrCookiesName = ""
   sstrPageUrl = ""
   sstrPageVar = "page"
   sstrTableName = ""
   sstrFieldsList = ""
   sstrCondiction = ""
   sstrOrderList = ""
   sstrPrimaryKey = ""
   sintRefresh = 0
  
   sintRecordCount = 0
   sintPageSize = 0
   sintPageNow = 0
   sintPageMax = 0
  End Sub
 
  Rem ## 保存記錄數的 Cookies 變量
  Public Property Let strCookiesName(Value)
   sstrCookiesName = Value
  End Property
 
  Rem ## 轉向地址
  Public Property Let strPageUrl(Value)
   sstrPageUrl = Value
  End Property
 
  Rem ## 表名
  Public Property Let strTableName(Value)
   sstrTableName = Value
  End Property
 
  Rem ## 字段列表
  Public Property Let strFieldsList(Value)
   sstrFieldsList = Value
  End Property
 
  Rem ## 查詢條件
  Public Property Let strCondiction(Value)
   If Value <> "" Then
    sstrCondiction = " WHERE " & Value
   Else
    sstrCondiction = ""
   End If
  End Property
 
  Rem ## 排序字段, 如: [ID] ASC, [CreateDateTime] DESC
  Public Property Let strOrderList(Value)
   If Value <> "" Then
    sstrOrderList = " ORDER BY " & Value
   Else
    sstrOrderList = ""
   End If
  End Property
 
  Rem ## 用于統計記錄數的字段
  Public Property Let strPrimaryKey(Value)
   sstrPrimaryKey = Value
  End Property
 
  Rem ## 每頁顯示的記錄條數
  Public Property Let intPageSize(Value)
   sintPageSize = toNum(Value, 20)
  End Property
 
  Rem ## 數據庫連接對象
  Public Property Let objConn(Value)
   Set sobjConn = Value
  End Property
 
  Rem ## 當前頁
  Public Property Let intPageNow(Value)
   sintPageNow = toNum(Value, 1)
  End Property
 
  Rem ## 頁面參數
  Public Property Let strPageVar(Value)
   sstrPageVar = Value
  End Property
 
  Rem ## 是否刷新. 1 為刷新, 其他值則不刷新
  Public Property Let intRefresh(Value)
   sintRefresh = toNum(Value, 0)
  End Property
 
  Rem ## 獲得當前頁
  Public Property Get intPageNow()
   intPageNow = singPageNow
  End Property
 
  Rem ## 分頁信息
  Public Property Get strPageInfo()
   strPageInfo = sstrPageInfo
  End Property
 
  Rem ## 取得記錄集, 二維數組或字串, 在進行循環輸出時必須用 IsArray() 判斷
  Public Property Get arrRecordInfo()
   If Not sbooInitState Then
    Exit Property
   End If
  
   Dim rs, sql
   sql = "SELECT " & sstrFieldsList & _
    " FROM " & sstrTableName & _
    sstrCondiction & _
    sstrOrderList
  
   Set rs = Server.CreateObject("Adodb.RecordSet")
   rs.open sql, sobjConn, 1, 1
   If Not(rs.eof or rs.bof) Then
    rs.PageSize = sintPageSize
    rs.AbsolutePage = sintPageNow
    If Not(rs.eof or rs.bof) Then
     arrRecordInfo = rs.getrows(sintPageSize)
    Else
     arrRecordInfo = ""
    End If
   Else
    arrRecordInfo = ""
   End If
   rs.close
   Set rs = nothing
  End Property
 
  Rem ## 初始化記錄數
  Private Sub InitRecordCount()
   sintRecordCount = 0
   If Not(sbooInitState) Then Exit Sub
   Dim sintTmp
   sintTmp = toNum(request.Cookies("_xp_" & sstrCookiesName), -1)
   If ((sintTmp < 0) Or (sintRefresh = 1))Then
    Dim sql, rs
    sql = "SELECT COUNT(" & sstrPrimaryKey & ")" & _
     " FROM " & sstrTableName & _
     sstrCondiction
    Set rs = sobjConn.execute(sql)
    If rs.eof or rs.bof Then
     sintTmp = 0
    Else
     sintTmp = rs(0)
    End If
    sintRecordCount = sintTmp
   
    response.Cookies("_xp_" & sstrCookiesName) = sintTmp
   Else
    sintRecordCount = sintTmp
   End If
  End Sub
 
  Rem ## 初始化分頁信息
  Private Sub InitPageInfo()
   sstrPageInfo = ""
   If Not(sbooInitState) Then Exit Sub
  
   Dim surl  
   surl = sstrPageUrl  
   If Instr(1, surl, "?", 1) > 0 Then
    surl = surl & "&" & sstrPageVar & "="
   Else
    surl = surl & "?" & sstrPageVar & "="
   End If
  
   If sintPageNow <= 0 Then sintPageNow = 1
   If sintRecordCount mod sintPageSize = 0 Then
    sintPageMax = sintRecordCount / sintPageSize
   Else
    sintPageMax = sintRecordCount / sintPageSize + 1
   End If
   If sintPageNow > sintPageMax Then sintPageNow = sintPageMax
  
   If sintPageNow <= 1 then
    sstrPageInfo = "首頁 上一頁"
   Else
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & "1"">首頁</a>"
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & (sintPageNow - 1) & """>上一頁</a>"
   End If
  
   If sintPageMax - sintPageNow < 1 then
    sstrPageInfo = sstrPageInfo & " 下一頁 末頁 "
   Else
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & (sintPageNow + 1) & """>下一頁</a> "
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & sintPageMax & """>末頁</a> "
   End If
  
   sstrPageInfo = sstrPageInfo & " 頁次:<strong><font color=""#990000"">" & sintPageNow & "</font> / " & sintPageMax & " </strong>"
   sstrPageInfo = sstrPageInfo & " 共 <strong>" & sintRecordCount & "</strong> 條記錄 <strong>" & sintPageSize & "</strong> 條/頁 "
  End Sub
 
  Rem ## 長整數轉換
  Private function toNum(s, Default)
   s = s & ""
   If s <> "" And IsNumeric(s) Then
    toNum = CLng(s)
   Else
    toNum = Default
   End If
  End function
 
  Rem ## 類初始化
  Public Sub InitClass()
   sbooInitState = True
   If Not(IsObject(sobjConn)) Then sbooInitState = False
   Call InitRecordCount()
   Call InitPageInfo()  
  End Sub
 End Class
 Dim strLocalUrl
 strLocalUrl = request.ServerVariables("SCRIPT_NAME")
 
 Dim intPageNow
 intPageNow = request.QueryString("page")
 
 Dim intPageSize, strPageInfo
 intPageSize = 30
 
 Dim arrRecordInfo, i
 Dim Conn
 f__OpenConn
  Dim clsRecordInfo
  Set clsRecordInfo = New Cls_PageView
 
  clsRecordInfo.strTableName = "[myTable]"
  clsRecordInfo.strPageUrl = strLocalUrl
  clsRecordInfo.strFieldsList = "[ID], [Title], [LastTime]"
  clsRecordInfo.strCondiction = "[ID] < 10000"
  clsRecordInfo.strOrderList = "[ID] ASC"
  clsRecordInfo.strPrimaryKey = "[ID]"
  clsRecordInfo.intPageSize = 20
  clsRecordInfo.intPageNow = intPageNow
 
  clsRecordInfo.strCookiesName = "RecordCount"
  clsRecordInfo.strPageVar = "page"
 
  clsRecordInfo.intRefresh = 0
  clsRecordInfo.objConn = Conn
  clsRecordInfo.InitClass
 
  arrRecordInfo = clsRecordInfo.arrRecordInfo
  strPageInfo = clsRecordInfo.strPageInfo
  Set clsRecordInfo = nothing
 f__CloseConn
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>分頁測試</title>
<style type="text/CSS">
<!--
.PageView {
 font-size: 12px;
}
.PageView td {
 border-right-style: solid;
 border-bottom-style: solid;
 border-right-color: #E0E0E0;
 border-bottom-color: #E0E0E0;
 border-right-width: 1px;
 border-bottom-width: 1px;
}
.PageView table {
 border-left-style: solid;
 border-top-style: solid;
 border-left-color: #E0E0E0;
 border-top-color: #E0E0E0;
 border-top-width: 1px;
 border-left-width: 1px;
}
tr.Header {
 background: #EFF7FF;
 font-size: 14px;
 font-weight: bold;
 line-height: 120%;
 text-align: center;
}
-->
</style>
<style type="text/css">
<!--
body {
 font-size: 12px;
}
a:link {
 color: #993300;
 text-decoration: none;
}
a:visited {
 color: #003366;
 text-decoration: none;
}
a:hover {
 color: #0066CC;
 text-decoration: underline;
}
a:active {
 color: #000000;
 text-decoration: none;
}
table {
 font-size: 12px;
}
-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
  <tr>
  <td>&nbsp;<%= strPageInfo%></td>
 </tr>
</table>
<div class="PageView">
  <table width="100%" border="0" cellspacing="0" cellpadding="4">
    <tr class="Header">
    <td>ID</td>
    <td>描述</td>
    <td>日期</td>
  </tr>
 <%
  If IsArray(arrRecordInfo) Then
   For i = 0 to UBound(arrRecordInfo, 2)
 %>
  <tr>
    <td>&nbsp;<%= arrRecordInfo(0, i)%></td>
    <td>&nbsp;<%= arrRecordInfo(1, i)%></td>
    <td>&nbsp;<%= arrRecordInfo(2, i)%></td>
  </tr>
 <%
   Next
  End If
 %>
</table>
</div>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
  <tr>
  <td>&nbsp;<%= strPageInfo%></td>
 </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
  <tr>
    <td align="center">&nbsp;<%= getTimeOver(1)%></td>
  </tr>
</table>
</body>
</html>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩电影在线观看| 深夜福利一区二区| 国产成人综合精品在线| 国产欧美精品在线播放| 亚洲另类欧美自拍| 播播国产欧美激情| 亚洲成avwww人| 91麻豆国产语对白在线观看| 一级做a爰片久久毛片美女图片| 中文字幕日韩高清| 自拍偷拍亚洲一区| 国产主播欧美精品| 欧美日韩在线观看视频| 一级做a爰片久久毛片美女图片| 亚洲女人初尝黑人巨大| 国产精品视频精品| 68精品国产免费久久久久久婷婷| 欧美性高潮床叫视频| 九九热在线精品视频| 欧洲成人免费视频| 欧美大奶子在线| 国产精品va在线播放| 久久精品国产亚洲精品2020| 欧美日韩国产精品一区二区不卡中文| 日韩av中文在线| 91免费综合在线| 欧美风情在线观看| 欧美一区二区三区图| 日韩激情av在线播放| 欧美高跟鞋交xxxxhd| 北条麻妃99精品青青久久| 成人精品久久av网站| 日韩在线视频播放| 在线性视频日韩欧美| 91精品国产免费久久久久久| 日韩大片在线观看视频| 国产精品美女视频网站| 亚洲男人的天堂在线| 麻豆一区二区在线观看| 亚洲精品狠狠操| 亚洲美女自拍视频| 88xx成人精品| 97av在线视频免费播放| 亚洲精品wwww| 欧美性猛交视频| 亚洲欧洲在线视频| 欧美精品一本久久男人的天堂| 亚洲综合最新在线| 国产区精品视频| 亚洲精品天天看| 国产亚洲一级高清| 日韩大片免费观看视频播放| 色婷婷亚洲mv天堂mv在影片| 国产日韩精品视频| 午夜精品久久久久久99热软件| 日韩在线观看电影| 亚洲在线观看视频| zzjj国产精品一区二区| 国产精品嫩草影院一区二区| 久久人人97超碰精品888| 97视频免费在线看| 国产美女主播一区| 国产专区精品视频| 97**国产露脸精品国产| 亚洲第一中文字幕在线观看| 色偷偷9999www| 国产精品亚洲自拍| 久久久欧美精品| 日韩精品久久久久| 欧美大片免费观看在线观看网站推荐| 亚洲国产精品成人va在线观看| 日韩精品极品在线观看| 亚洲网站视频福利| 欧美日韩aaaa| 亚洲成人精品视频在线观看| 日本成人激情视频| 欧美性极品xxxx做受| 亚洲激情视频在线| 欧美另类69精品久久久久9999| 日韩中文字幕在线视频| 欧美成人免费全部| 一区二区三区国产在线观看| 亚洲色图13p| 欧美激情国内偷拍| 久久精品福利视频| 亚洲综合国产精品| 国产精品一久久香蕉国产线看观看| 欧美精品18videos性欧| 一本久久综合亚洲鲁鲁| 97涩涩爰在线观看亚洲| 欧美成人精品一区二区三区| 欧美一级高清免费播放| 米奇精品一区二区三区在线观看| 久热99视频在线观看| 国产日韩欧美一二三区| 欧美激情一区二区三区久久久| 欧美亚洲视频在线看网址| 91精品综合久久久久久五月天| 久久精品国产清自在天天线| 在线播放日韩专区| 国产999精品久久久| 亚洲天天在线日亚洲洲精| 欧美激情精品久久久久久黑人| 亚洲加勒比久久88色综合| 欧美另类老女人| 日韩欧美在线一区| 国产亚洲人成a一在线v站| 国产欧美日韩综合精品| 午夜精品久久久久久99热软件| 中文国产成人精品| 秋霞av国产精品一区| 精品视频久久久| 日韩精品999| 色偷偷偷亚洲综合网另类| 欧美激情日韩图片| 欧美国产日本在线| 亚洲国模精品一区| 日韩一区二区在线视频| 欧美激情第三页| 国产精品自拍偷拍视频| 亚洲精品美女视频| 色老头一区二区三区在线观看| 国产乱人伦真实精品视频| 伊人伊成久久人综合网小说| 日韩在线免费av| 国产精品日韩久久久久| 国模私拍一区二区三区| 日日狠狠久久偷偷四色综合免费| 国产日韩欧美在线播放| 不卡毛片在线看| 国产欧美日韩91| 美女啪啪无遮挡免费久久网站| 中文字幕日韩在线观看| 亚洲激情久久久| 国产日韩欧美在线| 欧美天天综合色影久久精品| 国产欧美一区二区白浆黑人| 欧美影院成年免费版| 深夜福利亚洲导航| 中文字幕日韩欧美在线视频| 日本欧美国产在线| 国产精品www色诱视频| 青青青国产精品一区二区| 欧美午夜xxx| 亚洲男人天堂网站| 九九久久精品一区| 91精品国产91| 欧美大胆a视频| 精品综合久久久久久97| 国产精品亚洲片夜色在线| 海角国产乱辈乱精品视频| 欧美成人精品激情在线观看| 一本大道亚洲视频| 伊人久久五月天| 日本国产精品视频| 久久九九亚洲综合| 亚洲精品久久久久久久久久久久久| 亚洲日本中文字幕免费在线不卡| 日韩精品一二三四区| 日韩精品极品视频免费观看| 国产视频自拍一区| 国产视频精品一区二区三区| 久久国产精品久久久久久久久久| 黑人巨大精品欧美一区二区三区|