Tested in 50,000 records, the speed is much faster than the ADO.
<%
'********************************************************** *********************************** The specific usage 'set conn = Server.createObject ("AdoDb.Connection ") 'conn.open" driver = {SQL Server}; server = (local); UID = SA; PWD = 1230; Database = Music "' set = mp.execute (" Select * from Musiclist ", CON, 29 ) 'While Not Rs.eof' Response.write RS ("MusicName") & " " 'rs2.movenext'Wend'mp.PageDispaly ()' *********************** *********************************************************** ******************** Class MyPage private MyPage_Conn, MyPage_StrSql, MyPage_TotalStrSql, MyPage_RS, MyPage_TotalRS private MyPage_PageSize private MyPage_PageAbsolute, MyPage_PageTotal, MyPage_RecordTotal private MyPage_Url public property let conn (strConn) set Mypage_conn = Strconn End Property
Public Property Let Pagesize (INTPAGESIZE) MyPage_PageSize = CINT (INTPAGESIZE) End (INTPAGESIZE) End Property
public function PageExecute (strSql) MyPage_PageAbsolute = MyPage_PageAbsoluteRequest () MyPage_TotalStrSql = FormatMyPage_TotalStrSql (strSql) set MyPage_TotalRS = MyPage_Conn.execute (MyPage_TotalStrSql) MyPage_RecordTotal = MyPage_TotalRS ( "total") MyPage_PageTotal = Cint (MyPage_RecordTotal / MyPage_PageSize) MyPage_StrSql = FormatMyPage_StrSql (strSql) set MyPage_RS = MyPage_Conn.execute (MyPage_StrSql) dim i i = 0 while not MyPage_RS.eof and i <(MyPage_PageAbsolute-1) * MyPage_PageSize i = i 1 MyPage_RS.MoveNext wend set PageExecute = MyPage_RS end function
public function Execute (strSql, strConn, intPageSize) conn = strConn PageSize = intPageSize set Execute = PageExecute (strSql) end functionpublic function pageDispaly () MyPage_Url = ReadMyPage_Url firstPageTag = " 9 font>" '| < : font>" >> | previewPagetag = " 7 font>" '<< nextpagetag = " 8 FONT> ">> DIM strand if INSTR (mypage_url,"? ") = 0 dam ="? "else strand =" & "end if response.write"
"else response.write firstPageTag response.write previewPageTag end if response.write" & nbsp "dim CurrentStartPage, i i = 1 CurrentStartPage = (Cint (MyPage_PageAbsolute) / 10) * 10 1 if Cint (MyPage_PageAbsolute) mod 10 = 0 then CurrentStartPage = CurrentStartPage - 10 end if while i <11 and CurrentStartPage "& FormatCurrentStartPage &" & nbsp "i = i 1 CurrentStartPage = CurrentStartPage 1 wend if MyPage_PageAbsolute <(Mypage_pagetotal-10) Then Response.write "
"else response.write nextPageTag response.write LastPageTag end if response.write" "response.write" td> "response.write" tr> "response.write" table> "End Function
Public function getpageno () getpageno = cint (mypage_pageabsolute) End functionpublic function getPageCount () getPageCount = cint (mypage_pagetotal) End Function
Public function getpagename () getPagenoname = "mypage_pageno" End Function
Public function getpagesize () getpagesize = mypage_pagesize end function
Public Function GetRecordtotal () getRecordtotal = mypage_recordtotal End Function
Private function formatmyPage_strsql (strsql) formatmyPage_strsql = Replace (strsql, "select", "SELECT TOP" & (mypage_pageabsolute * cint)) End Function
private function MyPage_PageAbsoluteRequest () if request ( "MyPage_PageNo") = "" then MyPage_PageAbsoluteRequest = 1 else if IsNumeric (request ( "MyPage_PageNo")) then MyPage_PageAbsoluteRequest = request ( "MyPage_PageNo") else MyPage_PageAbsoluteRequest = 1 end if end if end function
private function ReadMyPage_Url () ReadMyPage_Url = Request.ServerVariables ( "URL") if Request.QueryString <> "" then ReadMyPage_Url = ReadMyPage_Url & "" & Request.QueryString end if set re = new RegExp re.Pattern = "[&? | ?] MyPage_PageNo = / d ? "re.IgnoreCase = true re.multiLine = true re.global = true Set Matches = re.Execute (ReadMyPage_Url) For Each Match in Matches tmpMatch = Match.Value ReadMyPage_Url = replace (ReadMyPage_Url, tmpMatch, "") Next End FunctionEND CLASS
%> <% '**************************************************** ************************************************ The specific usage 'set conn = Server.createObject "AdoDb.connection") 'conn.open "driver = {SQL Server}; server = (local); uid = sa; pwd = 1230; database = music"' Pagesize = 30 'set = mp.execute ("SELECT) * from musiclist ", continsize) 'While Not Rs2.eof' Response.write RS2 (" MusicName ") &" "rs.movenext 'Wend' mp.pagedispaly () '******** *********************************************************** ************************* Class MyPage private MyPage_Conn, MyPage_StrSql, MyPage_TotalStrSql, MyPage_RS, MyPage_TotalRS private MyPage_PageSize private MyPage_PageAbsolute, MyPage_PageTotal, MyPage_RecordTotal private MyPage_Url public property let conn (strConn) set MyPage_Conn = strConn end property public property let PageSize (intPageSize) MyPage_PageSize = Cint (intPageSize) end property public function PageExecute (strSql) MyPage_PageAbsolute = MyPage_PageAbsoluteRequest () MyPage_TotalStrSql = FormatMyPage_TotalStrSql (strSql) set MyPage_Total RS = MyPage_Conn.execute (MyPage_TotalStrSql) MyPage_RecordTotal = MyPage_TotalRS ( "total") MyPage_PageTotal = Cint (MyPage_RecordTotal / MyPage_PageSize) MyPage_StrSql = FormatMyPage_StrSql (strSql) set MyPage_RS = MyPage_Conn.execute (MyPage_StrSql) dim ii = 0 while not MyPage_RS.eof and i <(MyPage_PageAbsolute-1) * MyPage_PageSize i = i 1 MyPage_RS.MoveNext wend set PageExecute = MyPage_RS end function public function Execute (strSql, strConn, intPageSize) conn = strConn PageSize = intPageSize set Execute =
PageExecute (strSql) end function public function pageDispaly () MyPage_Url = ReadMyPage_Url firstPageTag = "9" '| << LastPageTag = ":"' >> | previewPageTag = "7" '<< nextPageTag = "8"' >> dim strAnd if INSTR (MyPage_URL, ") = 0 THEN STRAND ="? "Else Strand =" & "End if Response.write" "Response.write"
"Response.write" Page: "if MyPage_PageAbsolute> 10 then response.write" "& firstPageTag &" "response.write" "& previewPageTag &" "else response.write firstPageTag response.write previewPageTag end if response.write" "dim CurrentStartPage, ii? = 1 CurrentStartPage = (Cint (MyPage_PageAbsolute) / 10) * 10 1 if Cint (MyPage_PageAbsolute) mod 10 = 0 then CurrentStartPage = CurrentStartPage - 10 end if while i <11 and CurrentStartPage
"& FormatCurrentStartPage &"? "I = i 1 currentStartPage = CurrentStartPage 1 Wend if mypage_pageabsolute <(mypage_pagetotal-10) Then Response.write"
"& nextPageTag &" Response.write "
"& LastPageTag &" "Else Response.write nextPagetag response.write lastpagetag end if response.write" "response.write"
"Response.write"
"Response.write"
"End function public function GetPageNo () GetPageNo = cint (MyPage_PageAbsolute) end function public function GetPageCount () GetPageCount = cint (MyPage_PageTotal) end function public function GetPageNoName () GetPageNoName =" MyPage_PageNo "end function public function GetPageSize () GetPageSize = MyPage_PageSize end function public function GetRecordTotal () GetRecordTotal = MyPage_RecordTotal end function private function FormatMyPage_TotalStrSql (strSql) FormatMyPage_TotalStrSql = "select count (*) as total" FormatMyPage_TotalStrSql = FormatMyPage_TotalStrSql & Mid (strSql, instr (strSql, "from")) FormatMyPage_TotalStrSql = Mid (FormatMyPage_TotalStrSql , 1, instr (FormatMyPage_TotalStrSql & "order by", "order by") - 1) end function private function FormatMyPage_StrSql (strSql) FormatMyPage_StrSql = replace (strSql, "select", "select top" & (MyPage_PageAbsolute * Cint (MyPage_PageSize)) ) End function private function mypage_pageabsoluterequest () if Request ("mypage_pageno") = "" "" "" "" "" = 1 else if IsNumeric (request ( "MyPage_PageNo")) then MyPage_PageAbsoluteRequest = request ( "MyPage_PageNo") else MyPage_PageAbsoluteRequest = 1 end if end if end function private function ReadMyPage_Url () ReadMyPage_Url = Request.ServerVariables ( "URL") if Request. ? QueryString <> "" then ReadMyPage_Url = ReadMyPage_Url & "" & Request.QueryString end if set re = new RegExp re.Pattern = "[& |?] MyPage_PageNo = / d " re.IgnoreCase = true re.multiLine = true? Re.global = True set matches =