• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp的通用数据分页类
     (原创)!--#include file="Conn.asp" -->
    通用数据分页类
        通用分页类,以后写分页显示数据时就轻松多啦.直接调用此类,然后再Execute即可以取得当前页的所有数据.
        此类所做的工作是只取得当前页的数据,和总页数和总记录数等等数据.

    ASP代码:
    %
    '/*****************************分页显示类**************************
    '/* 作者:哇哇鱼
    '/* 日期:2004年11月18日
    '/* 作用:取得某一页的数据并返回给外部
    '/* 说明示例:
    '/* Dim MyPage=New PageClass
    '/* MyPage.Conn=Conn                '设置连接对象
    '/* MyPage.PageSize=20                 '设置一页显示多少条数据 (默认为10条)
    '/* MyPage.CurPage=2                   '设置当前要显示的页码
    '/*''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '/* MyPage.TableName="Member"       '设置表名
    '/* MyPage.Fields="ID,MemberName,MemberPass"   '设置显示字段列表
    '/* MyPage.Condition="ID>100"          '设置查询条件
    '/* MyPage.OrderBy="ID DESC"           '设置排序条件(一定要设置该属性)
    '/* Set PageRs=MyPage.Execute          '返回当前第2页的数据(RecordSet对象),如果出错则返回Nothing值
    '/*''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '/*'以上的定义也可以用以下的方法:ExecuteBy("表名","字段列表","查询条件","排序条件")
    '/* Set PageRs=MyPage.ExecuteBy("Member","ID,MemberName,MemberPass","ID>100","ID DESC")
    '/*''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '/* PageCount=MyPage.PageCount         '返回页码总数
    '/* RecordCount=MyPage.RecordCount     '返回记录总数
    '/* NextPage=MyPage.NextPage           '返回下页的页码
    '/* PrePage=MyPage.PrePage             '返回上一页的页码
    '/*****************************************************************
    Class PageClass
        Private Connection               '连接数据库的外部Connection对象
        Private Rs
        Private List_Fields
        Private Table_Name
        Private Query_Where
        Private OrderBy_SQL              '字段排序语句部分
        Private Page_Count               '返回当前查询的记录页总数
        Private Page_Size                '设置一页显示多少条的记录
        Private Cur_Page                 '设置当前的页码
        Private Record_Count             '返回当前查询的记录总数

        '/****************设置Connection对象****************************
        Public Property Let Conn(ByRef ObjConn)
            Set Connection=ObjConn
        End Property
        Public Property Get Conn()
            Set Conn=Connection
        End Property
        '/****************End******************************************

        '/****************设置查询SQL语句*******************************
        ''查询显示字段
        Public Property Let Fields(ByVal Value)
            List_Fields=Value
        End Property
        Public Property Get Fields()
            Fields=List_Fields
        End Property
        ''查询表名
        Public Property Let TableName(ByVal Value)
            Table_Name=Value
        End Property
        Public Property Get TableName()
            TableName=Table_Name
        End Property
        ''查询条件
        Public Property Let Condition(ByVal Value)
            Query_Where=Value
        End Property
        Public Property Get Condition()
            Condition=Query_Where
        End Property
        ''*****************排序部分********************************************
        ''Value 语不用写上Order By 。如: [object].OrderBy="ID Desc,PostTime Asc"
        Public Property Let OrderBy(ByVal Value)
            OrderBy_SQL=Value
        End Property
        Public Property Get OrderBy()
            OrderBy=OrderBy_SQL
        End Property
        '/****************End******************************************

        '/****************返回当前查询结果的总页数***********************
        Public Property Get PageCount()
            PageCount=Page_Count
        End Property
        Public Property Get RecordCount()
            RecordCount=Record_Count
        End Property
        Public Property Get NextPage()
            If Cur_PagePage_Count Then
                NextPage=Cur_Page+1
            Else
                NextPage=Page_Count
            End If
        End Property
        Public Property Get PrePage()
            If Cur_Page>1 Then
                PrePage=Cur_Page-1
            Else
                PrePage=Cur_Page
            End If
        End Property
        '/****************End******************************************

        '/****************设置一页显示的记录数***************************
        Public Property Let PageSize(ByVal Value)
            If Not IsNumeric(Value) Or Value="" Then
                Value=10
            Else
                Value=Cint(Value)
            End If
            If Value1 Then Value=10
            Page_Size=Value
        End Property
        Public Property Get PageSize()
            PageSize=Page_Size
        End Property
        ''设置当前的页码数**************************
        Public Property Let Page(ByVal Value)
            If Not IsNumeric(Value) Or Value="" Then
                Value=1
            Else
                Value=CLng(Value)
            End If
            If Value1 Then Value=1
            Cur_Page=Value
        End Property
        Public Property Get Page()
            Page=Cur_Page
        End Property
        '/****************End******************************************

        Private Sub Class_Initialize
        '初始化RecordSet对象
            Page_Size=10            '默认一页为10条数据
            CurPage=1                   '默认当前为第一页
            Record_Count=0
            Page_Count=0
        End Sub

        Private Sub Class_Terminate
            Call CloseRecordSet
        End Sub

        '/***关闭数据库的连接*******
        Private Sub CloseRecordSet
            On Error Resume Next
            If IsObject(Rs) Then
                Rs.Close
                Set Rs=Nothing
            End If
            On Error Goto 0
        End Sub

        '/**********执行查询返回对应页码的数据***********************************************
        Public Function ExecuteBy(ByVal oTableName,ByVal oFields,ByVal oCondition,ByVal oOrderBy)
            Table_Name=oTableName
            List_Fields=oFields
            Query_Where=oCondtion
            OrderBy_SQL=oOrderBy
            Set ExecuteBy=Execute()
        End Function
        '查询并返回当前CurPage的页码记录
        Public Function Execute()
            Call CloseRecordSet
            On Error Resume Next
            Dim TSQL,TopMod,sWhere
            If Not IsObject(Connection) Or Table_Name="" Or OrderBy_SQL="" Then
                Set Execute=Nothing
                Record_Count=0
                Page_Count=0
                Exit Function
            End If
            If Trim(Query_Where)>"" Then 
                sWhere="Where "Query_Where
            Else
                sWhere=""
            End If
            TSQL="Select Count(*) From ["Table_Name"] "sWhere
            Record_Count=Connection.Execute(TSQL)(0)    '获取记录总数
            If Err Then
                Err.Clear
                Set Execute=Nothing
                Record_Count=0
                Page_Count=0
                Exit Function
            End If
            If Record_Count1 Then
                Set Execute=Nothing
                Record_Count=0
                Page_Count=0
                Exit Function
            End If
            '取得页的总数
            If Record_Count Mod Page_Size >0 Then
                TopMod=Record_Count Mod Page_Size
                Page_Count=Fix(Record_Count/Page_Size)+1
                If Cur_PagePage_Count Then
                    TopMod=Page_Size
                End If
            Else
                TopMod=Page_Size
                Page_Count=Fix(Record_Count/Page_Size)
            End If
            If Cur_Page>Page_Count Then Cur_Page=Page_Count
            If Cur_Page1 Then Cur_Page=1
            If Trim(List_Fields)="" Then List_Fields="*"
            TSQL="Select * From (Select Top "TopMod" * From (Select Top "(Cur_Page*Page_Size)" "List_Fields" From ["Table_Name"] "sWhere" Order By "OrderBy_SQL") Order By "TransformOrder(OrderBy_SQL)")Order By "OrderBy_SQL
            Set Rs=Connection.Execute(TSQL)
            If Err Then
                Err.Clear
                Set Execute=Nothing
                Record_Count=0
                Page_Count=0
                Exit Function
            End If
            Set Execute=Rs
        End Function

        '转换OrderBy的顺序 ASC->DESC   DESC->ASC
        Private Function TransformOrder(ByVal Value)
            If Value="" Then
                TransformOrder=""
                Exit Function
            End If
            Dim OrderArray,i,Result,ByString,Fields,InPos
            OrderArray=Split(Value,",")   '分解每个字段值
            For i=0 To Ubound(OrderArray)
                If OrderArray(i)>"" Then
                    InPos=InStrRev(Trim(OrderArray(i))," ")  '找出排序的顺序
                    If InPos1 Then  '如果找不到则是ASC排序
                        ByString="ASC"
                        Fields=OrderArray(i)+" "
                    Else
                        ByString=Trim(Mid(OrderArray(i),InPos+1))
                        Fields=Left(OrderArray(i),InPos)
                        If ByString>"" Then
                            ByString=UCase(ByString)
                        Else
                            ByString="ASC"
                        End If
                    End If
                    ''转换排序
                    If ByString="ASC" Then
                        ByString="DESC"
                    Else
                        ByString="ASC"
                    End If
                    Result=Result+Fields+ByString+","
                End If
            Next
            If Result>"" Then Result=Left(Result,Len(Result)-1)
            TransformOrder=Result
        End Function
    End Class


    '示例代码:
    Sub Show_List
        Dim Page,PageRs
        Page=Request("Page")
        Dim MyPage
        Set MyPage=New PageClass
        MyPage.Conn=Conn
        MyPage.PageSize=20
        MyPage.Page=Page
        MyPage.TableName="table1"
        MyPage.Fields="*"
        MyPage.OrderBy="ID Asc"
        Set PageRs=MyPage.Execute
        'Set PageRs=MyPage.ExecuteBy("table1","*","","ID Asc")
        If PageRs Is Nothing Then Exit Sub
        Do Until PageRs.Eof
            Response.Write " tr bgcolor=""#FDFDFD"" style=""cursor:hand"" onmouseover=""this.style.background='#F3F3F3'"" onmouseout=""this.style.background='#FDFDFD'"">"
            Response.Write "    td height=""20"">div align=""center"">"PageRs("ID")"/div>/td>"
            Response.Write "    td>"PageRs("aaaa")"/td>"
            Response.Write "    td>a href="""PageRs("bbbb")""">font color='#000000'>"PageRs("bbbb")"/font>/a>/td>"
            Response.Write "    td>"PageRs("cccc")"/td>"
            Response.Write "  /tr>"
            PageRs.MoveNext
        Loop
        PageRs.Close
        PageCount=MyPage.PageCount
        Page=MyPage.Page            '取得当前正确的页码数
        NextPage=MyPage.NextPage
        PrePage=MyPage.PrePage
        Set PageRs=Nothing
        Set MyPage=Nothing
    End Sub
    Show_List
    %> 




    上一篇:用asp实现的数据库中存取文件的代码
    下一篇:Access 2000 数据库 80 万记录通用快速分页类
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp的通用数据分页类 asp,的,通用,数据,分页,类,