分页程序
100万ACCESS库分页程序,本程序两次读库操作
连接数据库
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<% dim time1,time2
time1=timer
Server.ScriptTimeout=1000 '脚本运行超时时间
dim conn,rs,sql,db
db="test10.mdb"
set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
%>
分页部分
<% '精点一百的简单分页,两次读库操作
dim jd100_ID,jd100_biao,jd100_zd,jd100_order
jd100_ID="id" '索引ID
jd100_biao="aa" '表名
jd100_zd="id,ipone,ipend,come" '字段名
jd100_order="ORDER BY ID DESC" '倒序
dim jd100_page_count,jd100_page_n,jd100_page_x,page
jd100_page_n=20 '每页显示留言数
jd100_page_x=5 '每页显示的页数
page = Request.QueryString("page") '得到当前页码
if page="" or Not IsNumeric(Page) then page=1
page =int(page)
'从数据库中读取统计当前记录总数
set Rs=server.createobject("adodb.recordset")
'sql= "SELECT Count("&jd100_ID&") FROM "&jd100_biao&" "
'Rs.Open SQL,Conn,0,1,&H0001
'jd100_page_count = Rs(0)
'Rs.Close
jd100_page_count=conn.execute("select COUNT("&jd100_ID&") From "&jd100_biao&" ",0,1)(0)
' 显示页码的函数
Function jd100_pagefun(jd100_page_count)
dim jd100_page_k,jd100_page_y,jd100_page_page2
'计算页数相关
if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then
jd100_page_y=int(jd100_page_count/jd100_page_n)
else
jd100_page_y=int(jd100_page_count/jd100_page_n)+1
end if
if page>jd100_page_y then page=jd100_page_y
jd100_page_page2= int(page/jd100_page_x)
if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1
jd100_page_k=jd100_page_page2*jd100_page_x
if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y
'打出页码
Response.Write ("有"&jd100_page_count&" 条 "& page &"/"& jd100_page_y &"页 分页")
if jd100_page_page2>1 then
Response.Write ("<a href='?page=1'><font face=webdings>9</font></a>")
Response.Write (" <a href='?page="& jd100_page_page2*jd100_page_x-jd100_page_x &"'><font face=webdings>3</font></a>")
end if
For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k
Response.Write (" [<a href='?page="& jd100_page_m &"'>"& jd100_page_m &"</a>]")
Next
if jd100_page_page2*jd100_page_x < jd100_page_y then
Response.Write (" <a href='?page="&jd100_page_m&"'><font face=webdings>4</font></a>")
Response.Write (" <a href='?page="&jd100_page_y&"'><font face=webdings>:</font></a>")
end if
End Function
'打开记录集
sql="select "&jd100_zd&" From "&jd100_biao&" "&jd100_order&" "
Rs.Open sql,Conn,1,1,&H0001
'根据分页参数获取当前页面纪录
Rs.AbsolutePosition=Rs.AbsolutePosition+((Abs(Page)-1)*jd100_page_n)
%>
读取显示页码函数
<%=jd100_pageFun(jd100_page_count)%>
显示和循环部分
<%
ipage=0
do while not rs.eof and ipage < jd100_page_n
ipage=ipage+1
%>
这里读取内容
<%
rs.movenext
loop
Rs.Close '每用完一次RS,就关一次
'每页最后,关闭和释放内存
Set Rs = Nothing
conn.close
set conn=nothing
%>
本页的执行时间计算
<% time2=timer
Response.Write "<br><div align=""center"">执行时间"&(time2-time1)*1000&"毫秒</div><br>"
%>
『2楼』作者:极品人渣 时间:2005-6-21 17:44:17
100万ACCESS库分页都没问题的分页程序,本程序三次读库操作
<%
dim jd100_ID,jd100_biao,jd100_zd,jd100_order
jd100_ID="id" '索引ID
jd100_biao="aa" '表名
jd100_zd="id,ipone,ipend,come" '字段名
jd100_order="ORDER BY ID DESC" '倒序
'精点一百的简单分页
dim jd100_page_count,jd100_page_n,jd100_page_x,page
jd100_page_n=20 '每页显示留言数
jd100_page_x=5 '每页显示的页数
page = Request.QueryString("page") '得到当前页码
if page="" or Not IsNumeric(Page) then page=1
page =int(page)
'统计当前记录数
jd100_page_count=conn.execute("select COUNT("&jd100_ID&") as jd100_page_count From "&jd100_biao&" ")("jd100_page_count")
Function pagefun(jd100_page_count)
dim jd100_page_k,jd100_page_y,jd100_page_page2
if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then '计算出分页数
jd100_page_y=int(jd100_page_count/jd100_page_n)
else
jd100_page_y=int(jd100_page_count/jd100_page_n)+1
end if
if page>jd100_page_y then page=jd100_page_y
jd100_page_page2= int(page/jd100_page_x)
if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1
jd100_page_k=jd100_page_page2*jd100_page_x
if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y
Response.Write ("有"&jd100_page_count&" 条 "& page &"/"& jd100_page_y &"页 分页")
if jd100_page_page2>1 then
Response.Write ("<a href='?page=1'><font face=webdings>9</font></a>")
Response.Write (" <a href='?page="& jd100_page_page2*jd100_page_x-jd100_page_x &"'><font face=webdings>3</font></a>")
end if
For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k
Response.Write (" [<a href='?page="& jd100_page_m &"'>"& jd100_page_m &"</a>]")
Next
if jd100_page_page2*jd100_page_x < jd100_page_y then
Response.Write (" <a href='?page="&jd100_page_m&"'><font face=webdings>4</font></a>")
Response.Write (" <a href='?page="&jd100_page_y&"'><font face=webdings>:</font></a>")
end if
End Function
if jd100_page_count > 0 then
'获取本页需要用到的id============================================
Sql="select "&jd100_ID&" from "& jd100_biao & " " & jd100_order
set Rs=server.createobject("adodb.recordset")
Rs.open Sql,Conn,1,1
Rs.PageSize = jd100_page_n '每页显示记录数
Rs.AbsolutePage = Page '当前页数
For i=1 to Rs.pagesize
If Rs.eof then exit for
if(i=1)then
SqlId=Rs(jd100_ID)
else
SqlId=SqlId &","&Rs(jd100_ID) ' 获取的ID
end if
Rs.movenext
Next
'获取本页需要用到的id结束============================================
end if
sql="select "&jd100_zd&" From "&jd100_biao&" where "&jd100_ID&" in("& SqlId &") "&jd100_order&" "
Set Rs=Conn.Execute(sql)
%>
『3楼』作者:极品人渣 时间:2005-6-21 17:44:36
普通分页 记录在十万条以下 使用rs.move指针法
<%
dim jd100_ID,jd100_biao,jd100_zd,jd100_order
'jd100_ID="id" '索引ID
jd100_biao="aa" '表名
jd100_zd="id,ipone,ipend,come" '字段名
jd100_order="ORDER BY ID DESC" '倒序
jd100_order=" " '不排序
'call jd100_select()
'call jd100_page()
'call jd100_do()
'call jd100_loop()
'精点一百的简单分页
dim jd100_page_count,jd100_page_n,jd100_page_x,page,jd100_page_y,jd100_page_page2
dim jd100_page_k,jd100_page_End_Id,jd100_page_view
jd100_page_n=20 '每页显示留言数
jd100_page_x=5 '每页显示的页数
'在这里要加一条半断 参数是否是数字
page = Request.QueryString("page") '得到当前页码
if page="" or Not IsNumeric(Page) then page=1
page =int(page)
jd100_page_count=conn.execute("select COUNT(id) as jd100_page_count From "&jd100_biao&" ")("jd100_page_count")
if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then '计算出分页数
jd100_page_y=int(jd100_page_count/jd100_page_n)
else
jd100_page_y=int(jd100_page_count/jd100_page_n)+1
end if
if page>jd100_page_y then page=jd100_page_y
jd100_page_page2= int(page/jd100_page_x)
if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1
jd100_page_k=jd100_page_page2*jd100_page_x
if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y
'打开字段'
if page=1 then
sql="select top "&jd100_page_n&" "&jd100_zd&" From "&jd100_biao&" "&jd100_order&" "
else
jd100_page_End_Id=jd100_page_n*page
sql="select top "&jd100_page_End_Id&" "&jd100_zd&" From "&jd100_biao&" "&jd100_order&" "
end if
Set Rs=Conn.Execute(sql)
if Page>1 then RS.Move jd100_page_End_Id-jd100_page_n '移动到当前记录
%>
显示页码
有<%=jd100_page_count %>条 <%=page %>/<%=jd100_page_y %>页 分页
<% if jd100_page_page2>1 then %>
<a href="?page=1"><font face=webdings>9</font></a>
<a href="?page=<%=jd100_page_page2*jd100_page_x-jd100_page_x%>"><font face=webdings>3</font></a>
<% end if %>
<% For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k %>
[<a href="?page=<%=jd100_page_m%>"><%=jd100_page_m%></a>]
<% Next %>
<% if jd100_page_page2*jd100_page_x < jd100_page_y then %>
<a href="?page=<%=jd100_page_m%>"><font face=webdings>4</font></a>
<a href="?page=<%=jd100_page_y %>"><font face=webdings>:</font></a>
<% end if %>
『4楼』作者:极品人渣 时间:2005-6-21 17:46:14
标题:传统分页
<%
Set Rs = Server.CreateObject("ADODB.RecordSet")
Sql="Select * From gdnews Order By date Desc"
Rs.Open Sql,Conn,1,1
TotalRecord=Rs.RecordCount
'每页显示的记录数
Rs.PageSize =20
PageSize = Rs.PageSize
PageCount=Rs.PageCount
if rs.bof and rs.eof then
CM="当前没有记录"
else
page=request("page")
'保证页数在 1-总页数 之间
if page=""or clng(page)<1 then page=1
if clng(page)>pagecount then page=pagecount
If page="" Then
Rs.AbsolutePage = 1
Else
Rs.AbsolutePage = page
End If
end if
%>
<% do while i < PageSize And not rs.eof '显示记录
附加说明
rdate=formatdatetime(rs("date"),2) '格式化时间
if DATEDIFF("d",rdate,date()) <=3 then '三天内的信息,显红色
rdate="<font color=""#FF0000"">("&rdate&")</font> <img src=""images/new.gif"" >"
else
rdate="<font color=""#666666"">("&rdate&")</font>"
end if
rname=rs("title") & " "
%>
'内容
<%
rs.movenext
i=i+1
loop
Rs.Close
Set Rs = Nothing
%>
分页:
<!--显示页码-->
<% For m = 1 To PageCount
%>
<% if page=m then %>
[<%=m%>]
<% else %>
[<a href="?page=<%=m %" target="_parent"><%=m%></a>]
<% end if %>
<% Next %>
『5楼』作者:极品人渣 时间:2005-6-21 17:47:02
标题:分页显示页码函数
function jd100page(jd100_page_count,jd100_page_n,jd100_page_x) '参数: 总记录数,每页显示记录,每页显示页数
dim jd100_page_k,jd100_page_y,jd100_page_page2
'计算页数相关
if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then
jd100_page_y=int(jd100_page_count/jd100_page_n)
else
jd100_page_y=int(jd100_page_count/jd100_page_n)+1
end if
if page>jd100_page_y then page=jd100_page_y
jd100_page_page2= int(page/jd100_page_x)
if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1
jd100_page_k=jd100_page_page2*jd100_page_x
if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y
'输出页码
jd100page= "有"&jd100_page_count&" 条 "& page &"/"& jd100_page_y &"页 分页 "
if jd100_page_page2>1 then
jd100page=jd100page& "<a href='?page=1' class='jd100'><font face=webdings>9</font></a>"
jd100page=jd100page& " <a href='?page="& jd100_page_page2*jd100_page_x-jd100_page_x &"' class='jd100'><font face=webdings>3</font></a>"
end if
For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k
if jd100_page_m=page then
jd100page=jd100page&" [<a href='?page="& jd100_page_m &"' class='jd100'><font color=#ff0000>"& jd100_page_m &"</font></a>]"
else
jd100page=jd100page&" [<a href='?page="& jd100_page_m &"' class='jd100'>"& jd100_page_m &"</a>]"
end if
Next
if jd100_page_page2*jd100_page_x < jd100_page_y then
jd100page=jd100page&" <a href='?page="&jd100_page_m&"' class='jd100'><font face=webdings>4</font></a>"
jd100page=jd100page&" <a href='?page="&jd100_page_y&"' class='jd100'><font face=webdings>:</font></a>"
end if
end function
『6楼』作者:极品人渣 时间:2006-7-20 17:10:44
标题:id分页法
'必要过程
sub viewpage(p_c,p_n,p_x,p_p,p_cls)
' 总记录,显示记录数,显示页数,当前页,传替参数
dim p_k,p_y,p_p2,p_p3,p_m
if p_c/p_n = int(p_c/p_n) then
p_y=int(p_c/p_n)
else
p_y=int(p_c/p_n)+1
end if
if p_p>p_y then p_p=p_y
p_p2= int(p_p/p_x)
if p_p/p_x>p_p2 then p_p2=p_p2+1
p_k=p_p2*p_x
if p_k>p_y then p_k=p_y
response.write "<form name='formpage' method='post' action='' style='margin-bottom:0;margin-top:0'>"
response.write "共"& p_c &"条 每页:"&p_n&" 第"& p_p &"/"& p_y &"页 "
if p_p2>1 then
response.write "<a href='?page=1&"&p_cls&"' class='jd100'><font face=webdings>9</font></a>"
response.write " <a href='?page="& p_p2*p_x-p_x &"&"&p_cls&"' class='jd100'><font face=webdings>3</font></a>"
end if
For p_m =p_p2*p_x-(p_x-1) To p_k
if p_m=p_p then
response.write " [<a href='?page="& p_m &"&"&p_cls&"' class='jd100'><font color=#ff0000>"& p_m &"</font></a>]"
else
response.write " [<a href='?page="& p_m &"&"&p_cls&"' class='jd100'>"& p_m &"</a>]"
end if
Next
if p_p2*p_x < p_y then
response.write " <a href='?page="&p_m&"&"&p_cls&"' class='jd100'><font face=webdings>4</font></a>"
response.write " <a href='?page="&p_y&"&"&p_cls&"' class='jd100'><font face=webdings>:</font></a>"
end if
response.write " <input name='page' type='text' value='' size='2' maxlength='8' style='border:1px double rgb(88,88,88);font:9pt'> <input type='submit' name='Submit' value='go' style='border:1px double rgb(88,88,88);font:9pt;height:19px;'></form>"
End sub
Function repageid(jbiao,n,p,jorder)
' 表名,取N个记录,当前页,条件
repageid=0
dim pageRs
set pageRs=server.createobject("adodb.recordset")
pageRs.open "select id from "& jbiao & " " & jorder,conn,1,1,&H0001
if pageRs.eof then pageRs.close:exit function
pageRs.PageSize = n
pageRs.AbsolutePage = p
dim SqlId
dim j
For j=1 to n
If pageRs.eof then exit for
if(j=1)then
SqlId=pageRs(0)
else
SqlId=SqlId &","&pageRs(0)
end if
pageRs.movenext
Next
repageid=SqlId
pagers.close
set pagers=nothing
End Function
Function reSZ(jdNumer)
reSZ=jdNumer
if reSZ="" or Not IsNumeric(reSZ) then reSZ=1
reSZ =int(reSZ)
if reSZ<1 then reSZ=1
End Function
'调用时
'分类参数
const n=16 '每页显示
page=Request.QueryString("page")'获取页
if Request.Form("page")<>"" then page=Request.Form("page")
page=reSZ(page)
rscount=conn.Execute("select count(id) from news "&sid&" ",0,1)(0)
if page>rscount/n then
page=int(rscount/n)
if (rscount/n)>page then page=page+1
end if
dim sqlid'获取分页ID
sqlid=repageid("news",n,page,""&sid&" order by id desc")
with response
'.write sl
Set rs=conn.Execute("select title,datetime,hits,id from news where id in("&sqlid&") "&sl&" order by id desc",0,1)
'显示页数
if rscount>n then call viewpage(rscount,n,5,page,"type="&request("type"))'调用分页