If IsEmpty(Application("PageId")) Then '如果Application("PageId")还未初始化,则先进行初始化 Response.Write("Init app! ") Sql = "Select * From test Order By Id Desc" '假定这里是按照ID倒序排列 Rs.open Sql,Conn,1,1 '得到记录集对象
If Not (Rs.Eof or Rs.Bof) Then Rs.PageSize = PageList '设置每页记录数 PageCounts = Rs.PageCount ReDim PageId(PageCounts) '重新定义数组PageId For i = 0 To PageCounts '开始给数组 PageId() 赋值 If Rs.eof Then Exit For PageId(i) = Rs("ID") Rs.Move (PageList) Next Rs.MoveLast PageId(PageCounts) = Rs("ID") Application.Lock() Application("PageId") = PageId Application.UnLock() End If Rs.Close End If IdStart = Clng(Application("PageId")(Page-1)) IdEnd = Clng(Application("PageId")(Page)) Sql = "Select * from test where id<="&IdStart&" and id>"&IdEnd&" " Rs.open Sql,Conn,1,1 While Not Rs.eof Response.Write(rs(0)&"--"&rs(1)) Rs.MoveNext Wend Rs.Close Set Rs = Nothing Conn.Close Set Conn = Nothing
For i = 1 To Ubound(Application("PageId")) Response.Write(""&i&" ") Next Time2 = Timer()
传统分页代码如下:(下面称为旧程序) <% Time1 = Timer() Dim Conn Set Conn = Server.CreateObject("Adodb.Connection") Conn.open "Driver={MicroSoft Access Driver (*.mdb)};Dbq="&Server.MapPath("db.mdb")
Dim Page,PageCounts,PageList Dim Rs,Sql
PageList = 20 Page = Request.QueryString( "Page" ) Set Rs = Server.CreateObject("Adodb.Recordset") Sql = "Select * from test order by id desc" Rs.Open Sql,Conn,1,1
If Page = "" Then Page = 1 If Not( Rs.eof Or Rs.Bof ) Then Rs.PageSize = PageList PageCounts = Rs.PageCount Rs.AbsolutePage = Page End If
For i = 1 to PageList If Rs.eof Then Exit For Response.Write(Rs(0)&"-----"&Rs(1)&" ") Rs.MoveNext next
For i = 1 To PageCounts Response.Write(""&i&" ") Next Time2 = Timer()