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

首頁 > 編程 > ASP > 正文

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

2024-05-04 11:07:27
字體:
來源:轉載
供稿:網友

主要思路: 用一條語句統計(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>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费激情视频| 夜夜躁日日躁狠狠久久88av| 国色天香2019中文字幕在线观看| 91精品国产综合久久久久久蜜臀| 国产精品一区二区3区| 国语自产精品视频在免费| 韩日欧美一区二区| 亚洲性猛交xxxxwww| 国产精品免费一区二区三区都可以| 欧美一级在线亚洲天堂| 青青在线视频一区二区三区| 久久国内精品一国内精品| 日韩国产一区三区| 亚洲精品资源在线| 久久777国产线看观看精品| 欧美性猛交xxxx久久久| 一本大道久久加勒比香蕉| 亚洲欧美日韩国产中文专区| 欧美性猛交xxxx偷拍洗澡| 最新日韩中文字幕| www.欧美精品一二三区| 欧美性生交大片免网| 国模精品视频一区二区| 亚洲国产欧美精品| 久久精品男人天堂| 亚洲综合色激情五月| 色妞在线综合亚洲欧美| 福利一区福利二区微拍刺激| 成人h视频在线观看播放| 欧美精品生活片| 国产精品aaa| 亚洲欧洲国产伦综合| 日韩av手机在线观看| 国产精品白嫩初高中害羞小美女| 久久久久久久久久久人体| 亚洲日本成人女熟在线观看| 亚洲人成电影网站色xx| 欧美老妇交乱视频| 国产做受高潮69| 一区二区欧美久久| 欧美日韩在线视频一区二区| 欧美亚洲视频在线看网址| 永久555www成人免费| 综合网日日天干夜夜久久| 欧美一区第一页| 久久影院中文字幕| 亚洲女人天堂av| 91精品国产高清久久久久久91| 久久久久久久久久久亚洲| 91大神福利视频在线| 亚洲欧美日韩爽爽影院| 国产精品久久久999| 亚洲毛茸茸少妇高潮呻吟| 精品女厕一区二区三区| 日韩视频免费中文字幕| 亚洲一级一级97网| 成人免费网站在线观看| 国产精品亚洲精品| 亚洲国产另类久久精品| 国产精品久久久久久久久影视| 国产成人高潮免费观看精品| 91国内揄拍国内精品对白| 日韩亚洲欧美成人| 日韩美女视频在线观看| 久久91亚洲精品中文字幕奶水| 国产精品视频自拍| 成人网在线视频| 色综合久久88| 日韩精品在线看| 麻豆一区二区在线观看| 亚洲美女又黄又爽在线观看| 日韩中文字幕精品| 久久99国产综合精品女同| 中文字幕av一区二区三区谷原希美| 久久精品电影一区二区| 国模吧一区二区三区| 成人黄色激情网| 国产精品久久久久久网站| 91欧美日韩一区| 国产一区二区三区在线看| 九九久久国产精品| 久久视频免费在线播放| 欧美一区二区三区精品电影| 久久艳片www.17c.com| 国产欧美日韩中文| 亚洲美女又黄又爽在线观看| 久久资源免费视频| 亚洲品质视频自拍网| 丝袜美腿亚洲一区二区| 日本免费一区二区三区视频观看| 欧美俄罗斯性视频| 成人av.网址在线网站| 成人午夜黄色影院| 国产亚洲欧美日韩精品| 国产有码在线一区二区视频| 亚洲伊人一本大道中文字幕| 亚洲大胆人体在线| 欧美性高跟鞋xxxxhd| 久久九九热免费视频| 欧美日韩在线视频观看| 欧洲成人在线观看| 国产精品视频一区国模私拍| 日韩高清不卡av| 欧美日韩第一页| 亚洲精品久久久久国产| 欧美日韩在线第一页| 欧美亚洲国产日本| 成人激情电影一区二区| www.日韩欧美| 黑人巨大精品欧美一区免费视频| 久久av在线播放| 欧美专区福利在线| 国内伊人久久久久久网站视频| 欧美大片va欧美在线播放| 中文字幕日韩欧美在线| 久99久在线视频| 欧美俄罗斯乱妇| 亚洲国产高清福利视频| 日韩av日韩在线观看| 国产精品白丝jk喷水视频一区| 欧美日韩福利在线观看| 日韩在线精品一区| 97久久伊人激情网| 性色av一区二区三区红粉影视| 欧美午夜无遮挡| 久久伊人色综合| 国产精品最新在线观看| 久久免费少妇高潮久久精品99| 久久免费精品日本久久中文字幕| 欧美猛交免费看| 深夜福利日韩在线看| 中文字幕精品一区久久久久| 国产精品欧美激情在线播放| 国产亚洲成精品久久| 国产综合香蕉五月婷在线| 欧美激情在线观看视频| 国产精品日韩一区| 激情亚洲一区二区三区四区| 国产精品香蕉国产| 成人国内精品久久久久一区| 中文字幕亚洲字幕| 亚洲国产欧美自拍| 日韩精品在线视频| 亚洲成**性毛茸茸| 日本久久精品视频| 国产精品九九九| 久久久91精品国产一区不卡| 91影院在线免费观看视频| 在线不卡国产精品| 91精品久久久久久久久久久| 九色成人免费视频| 91沈先生在线观看| 色哟哟网站入口亚洲精品| 亚洲欧美制服另类日韩| 亚洲毛片在线免费观看| 国产精品第1页| 国产精品永久免费在线| 日韩av三级在线观看| 91精品久久久久久久久久久久久| 亚洲天堂网站在线观看视频| 日韩美女视频中文字幕| 国产精品爽爽爽| 国产精品免费久久久| 性欧美激情精品|