六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

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

    主要思路: 用一條語句統計(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 = "VBScript" CODEPAGE="936"%>
<%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>




主站蜘蛛池模板: 天天干天天干天天干天天干 | 日韩污视频在线观看 | 日韩免费毛片全部不收费 | 青春草在线观看 | 亚洲爱爱视频 | 一本久道久久综合中文字幕 | 中文字幕在线免费观看视频 | 欧美又大粗又爽又黄大片视频黑人 | 天天摸日日摸人人看 | 一级毛片免费高清视频 | 日韩亚洲制服丝袜中文字幕 | 日韩一区二紧身裤 | 色九九视频 | 特黄特a级特别特级特毛片 特黄视频免费看 | 欧美亚洲国产日韩综合在线播放 | 欧美性最xxx| 日本一区二区三区精品国产 | 日本www色视频成人免费免费 | 日韩在线天堂免费观看 | 四虎免费大片aⅴ入口 | 亚洲欧洲一区二区三区 | 又粗又大又爽又紧免费视频 | 中文字幕在线免费观看 | 无声在线完整版免费观看 | 视频一区视频二区在线观看 | 人人狠狠综合88综合久久 | 四虎国产在线观看 | 亚洲第9页 | 日日夜夜亚洲 | 最新国产你懂的在线网址 | 中文字幕在线精品视频站app | 欧美在线观看视频网站 | 亚洲精品天堂在线观看 | 奇米色婷婷 | 色偷偷亚洲男人天堂 | 四方色播 | 综合激情文学 | 亚洲欧美日本韩国综合在线观看 | 一二三四影院在线观看视频 | 任我鲁这里有精品视频在线播 | 亚洲成a人v在线观看 |