叶子分页类2

来源:互联网 发布:windows10远程ubuntu 编辑:程序博客网 时间:2024/04/28 13:07

<%
Rem =================================================================
Rem = RCSfile:Cls_Pages.asp
Rem = 说明:ASP+Access分页类
Rem = Revision:0.02Beta
Rem = 程序:yezi(叶子)
Rem = Date:2004/08/26 09:41:10
Rem = QQ:311673,ICQ:96240724,MSN:ishows@msn.com,http://www.showo.com,http://www.54nb.com
Rem = Thanks:54NB-链子提供测试数据库以及指针用法,Dvbbs火狐和其他几个人员的口水帐讨论^_^
Rem = 适用:asp+access承受记录条数20W,未索引,最后页面速度在120ms
Rem = 下版本预计改进:showo_page.js文件取页数得自定义参数,类取页数得自定义参数
Rem =================================================================

Class Cls_Pages
    Rem Const
    Private Showo_RecPerPage,Showo_CurrPage 
    Private Showo_Conn,Showo_CookieName,Showo_PageUrl,Showo_Term
    Private Showo_Sql,Showo_Field,Showo_Table,Showo_Where,Showo_OrderBy,Showo_Id
    Private iRecCount,iPageCount,iCurrPage,ResultSet_Sql,Showo_Mm

    '================================================================
    ' Class_Initialize 类的初始化
    '================================================================
    Private Sub Class_Initialize
        Showo_RecperPage=10  '设定每页记录条数的默认值为10
        Showo_CurrPage=CheckNum(Trim(request("Page")),1,-1) '获取当前面的值
    End Sub

    '================================================================
    ' Conn  得到数据库连接
    '================================================================
    Public Property Let Conn(obj_conn)
        Set Showo_Conn=obj_conn
    End Property

    '================================================================
    ' RecperPage 设置每一页记录条数,默认10记录
    '================================================================
    Public Property Let RecPerPage(ByVal int_recperpage)
        Showo_RecPerPage=CheckNum(int_recperpage,10,-1)
    End Property

    '================================================================
    ' CookieName 取得cookiename
    '================================================================
    Public Property Let CookieName(ByVal str_cookiename)
        Showo_CookieName=str_cookiename 
    End Property

    '================================================================
    ' PageUrl 取得showo_page.js的路径
    '================================================================
    Public Property Let PageUrl(ByVal str_pageurl)
        Showo_PageUrl=str_pageurl
    End Property

    '================================================================
    ' Term 搜索条件是否变化(0无变化,1有变化)
    '================================================================
    Public Property Let Term(ByVal int_term)
        Showo_Term=CheckNum(int_term,0,1)
    End Property

    '================================================================
    ' Sql 取得sql所需表字段条件排序,输入:字段,表,条件,排序,主ID
    '================================================================
    Public Property Let Sql(ByVal str_sql) 
        Showo_Sql=Split(str_sql,"$")
        Showo_Field=Showo_Sql(0)
        Showo_Table=Showo_Sql(1)
        Showo_Where=Showo_Sql(2)
        Showo_OrderBy=Showo_Sql(3)
        Showo_Id=Showo_Sql(4)
    End Property

    '================================================================
    ' RecCount 取得记录总数
    '================================================================
    Public Property Get RecCount()
        If Showo_Term=0 Then
            RecCount=Request.Cookies("ShowoPage")(Showo_CookieName)
            RecCount=CheckNum(RecCount,0,-1)
            If RecCount=0 Then
             RecCount=Showo_Conn.execute("SELECT Count("&Showo_Id&") FROM "&Showo_Table&" "&Showo_Where,0,1)(0)      
             Response.Cookies("ShowoPage")(Showo_CookieName)=RecCount
            End If  
        ElseIf Showo_Term=1 Then
            RecCount=Showo_Conn.execute("SELECT Count("&Showo_Id&") FROM "&Showo_Table&" "&Showo_Where,0,1)(0)
         Response.Cookies("ShowoPage")(Showo_CookieName)=RecCount
        Else
            RecCount=Showo_Conn.execute("SELECT Count("&Showo_Id&") FROM "&Showo_Table&" "&Showo_Where,0,1)(0)
        End If    
    End Property

    '================================================================
    ' ResultSet 返回分页后的记录集
    '================================================================
    Public Property Get ResultSet() 
        ResultSet=Null 
        '记录总数
        iRecCount=RecCount()  
        '当前页
        If iRecCount>0 Then
            '页数
            If (iRecCount mod Showo_RecPerPage)=0 Then
                iPageCount=iRecCount/Showo_RecPerPage 
            Else
                iPageCount=iRecCount/Showo_RecPerPage+1
            End If
            '当前页
            iCurrPage=CheckNum(Showo_CurrPage,1,iPageCount)
         Set Showo_Rs = server.CreateObject ("adodb.RecordSet")
         ResultSet_Sql="SELECT "&Showo_Field&" FROM "&Showo_Table&" "&Showo_Where&" "&Showo_OrderBy
            Showo_Rs.Open ResultSet_Sql,Showo_Conn,1,1,&H0001
         '&H0001表示adCmdText,将执行一段sql,&H0002表示adCmdTable,将操作一个表
         Showo_Rs.AbsolutePosition=(iCurrPage-1)*Showo_RecPerPage+1    
            ResultSet=Showo_Rs.GetRows(Showo_RecPerPage)
   Showo_Rs.close
            Set Showo_Rs=nothing
        End If 
    End Property

    '================================================================
    ' 输入:检查字段,开始数字(默认数字),结束数字(为-1则不检查大小)
    '================================================================
    Private Function CheckNum(byval iStr,byval iStartNum,byval iEndNum) 
        If IsNumeric(iStr) Then
            CheckNum=Clng(iStr)
        Else
            CheckNum=iStartNum
        End If
        If iEndNum>-1Then
            If CheckNum<iStartNum Then CheckNum=iStartNum
            If CheckNum>iEndNum Then CheckNum=iEndNum  
        End If 
    End Function

    '================================================================
    ' Class_Terminate 类注销
    '================================================================
    Private Sub Class_Terminate() 
        If IsObject(Showo_Conn) Then
         Showo_Conn.Close
         Set Showo_Conn = Nothing
        End If  
    End Sub

    '================================================================
    ' 上下页部分
    '================================================================
    Public Sub ShowPage()%>
        <Script Language="JavaScript" type="text/JavaScript" src="<%=Showo_PageUrl%>showo_page.js"></Script>
        <Script Language="JavaScript">
  ShowoPage("<table border='0' cellspacing='0' width='100%'><tr><td style='font-family:Verdana,宋体;font-size:8pt;line-height:15px'>","</td></tr></table>","页次:<font color='red'>","</font>/","","&nbsp;","&nbsp;每页<font color='red'>","</font>&nbsp;","&nbsp;共计:<font color='red'>","</font></td><td vAlign='bottom' align='right' style='font-family:Verdana,宋体;font-size:8pt;line-height:15px'>","<font face=webdings>9</font>","<font face=webdings>7</font>","<font face=webdings>8</font>","<font face=webdings>:</font>","&nbsp;&nbsp;跳转:","<font color='orange'>[","]</font>","","","<font color='red'>","</font>","","",<%=RecCount()%>,<%=Showo_RecperPage%>,2)
        </Script>
    <%End Sub

End Class
%>

原创粉丝点击