DDR爱好者之家 Design By 杰米
asp分页的一个类 
在50,000条记录下测试过,速度比ado的那个要快多了 

<%

'************************************************************************************
'具体用法
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_Url&strAnd&"MyPage_PageNo=1'>"&firstPageTag&"</a>"
            response.write  "<a href='"&MyPage_Url&strAnd&"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 i<11 and CurrentStartPage<MyPage_PageTotal+1
            if CurrentStartPage < 10 then
                FormatCurrentStartPage = "0" & CurrentStartPage
            else
                FormatCurrentStartPage = CurrentStartPage
            end if
            response.write  "<a href='"&MyPage_Url&strAnd&"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_Url&strAnd&"MyPage_PageNo="&(MyPage_PageAbsolute+10)&"'>"&nextPageTag&"</a>"
            response.write  "<a href='"&MyPage_Url&strAnd&"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

%> 


DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。