'************************************************************************************ '具体用法 Dim strDbPath Dim connstr Dim mp Set mp = New MyPage strDbPath = "fenye/db.mdb" connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" connstr = connstr Server.MapPath(strDbPath) Set conn = Server.CreateObject("Adodb.Connection") conn.open connstr set rs = mp.Execute("select * from table1",conn,29) while not rs.eof response.write rs("aaaa")"br>" 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_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 function
public function pageDispaly() MyPage_Url = ReadMyPage_Url firstPageTag = "font face=webdings>9/font>" '| LastPageTag = "font face=webdings>:/font>" '>>| previewPageTag = "font face=webdings>7/font>" ' nextPageTag = "font face=webdings>8/font>" '>> dim strAnd if instr(MyPage_Url,"?")=0 then strAnd = "?" else strAnd = "" end if response.write "table width=100% border=0 cellspacing=0 cellpadding=0>" response.write "tr>" response.write "td align=left>" response.write "页次:"MyPage_PageAbsolute"/"MyPage_PageTotal"页nbsp" response.write "主题数:"MyPage_RecordTotal response.write "/td>" response.write "td align=right>" response.write "分页:" if MyPage_PageAbsolute>10 then response.write "a href='"MyPage_UrlstrAnd"MyPage_PageNo=1'>"firstPageTag"/a>" response.write "a href='"MyPage_UrlstrAnd"MyPage_PageNo="(MyPage_PageAbsolute-10)"'>"previewPageTag"/a>" 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 i11 and CurrentStartPageMyPage_PageTotal+1 if CurrentStartPage 10 then FormatCurrentStartPage = "0" CurrentStartPage else FormatCurrentStartPage = CurrentStartPage end if response.write "a href='"MyPage_UrlstrAnd"MyPage_PageNo="CurrentStartPage"'>"FormatCurrentStartPage"/a>nbsp" i = i + 1 CurrentStartPage = CurrentStartPage + 1 wend if MyPage_PageAbsolute(MyPage_PageTotal-10) then response.write "a href='"MyPage_UrlstrAnd"MyPage_PageNo="(MyPage_PageAbsolute+10)"'>"nextPageTag"/a>" response.write "a href='"MyPage_UrlstrAnd"MyPage_PageNo="MyPage_PageTotal"'>"LastPageTag"/a>" 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 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")="" 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 function end Class