通用分页补助类

<%
Class Page
'通用分页补助类CONN,RS等对象自行关闭,本类不管:D
    Private page_num, page_max, table, id, shows, sort, where, order
    Private page_count, record_count
    Private conn, rs

    Private Sub Class_Initialize
        shows = "*"
    End Sub
   
    Private Sub Class_Terminate
       
    End Sub
   
    Private Sub Init
    '初始化参数
        Dim t_where
       
        If where <> "" Then t_where = " WHERE " & Trim(where)
       
        record_count = conn.Execute("SELECT COUNT(*) FROM " & table & t_where)(0)
       
        page_count = record_count / page_max
       
        If record_count Mod page_max > 0 Then page_count = page_count + 1
       
    End Sub
   
    Private Function Get_Sql
    '返回SQL
        Dim t_where, top, t_order
       
        If page_count > page_num Or record_count Mod page_max = 0 Then
            top = page_max
        Else
            top = record_count Mod page_max
        End If
       
        If UCase(order) = "DESC" Then
            t_order = "ASC"
        Else
            t_order = "DESC"
        End If
       
        If where <> "" Then t_where = " WHERE " & Trim(where)
   
  Get_Sql = "SELECT temp." & id & ", data." & Join(Split(shows, ","), ",data.") & " FROM (" & _
   "SELECT TOP " & top & " * FROM (" & _
   "SELECT TOP " & page_num * page_max & " " & id & " FROM " & table & t_where & _
   " ORDER BY " & sort & " " & order & _
   ") As temp" & _
   " ORDER BY " & sort & " " & t_order & _
   ") As temp" & _
   " INNER JOIN " & table & " As data" & _
   " ON temp." & id & " = data." & id & _
   " ORDER BY temp." & id & " " & order
       
    End Function
   
    Public Property Let Set_Page(t_n)
    '设置页数
        If Trim(t_n) = "" Or IsNull(t_n) Or Not IsNumeric("0" & t_n) Then
            page_num = 1
        Else
            page_num = Int(t_n)
        End If
    End Property
   
    Public Sub Set_Conn(ByRef t_o)
    '设置conn对象
        Set conn = t_o
    End Sub
   
    Public Property Let Set_Max(t_n)
    '设置显示数
        page_max = t_n
    End Property
   
    Public Property Let Set_Table(t_v)
    '设置表
        table = t_v
    End Property
 
    Public Property Let Set_Id(t_v)
    '设置ID字段
        id = t_v
    End Property
   
    Public Property Let Set_Shows(t_v)
    '设置显示字段
        shows = t_v
    End Property
   
    Public Property Let Set_Sort(t_v)
    '设置排序字段
        sort = t_v
    End Property
   
    Public Property Let Set_Where(t_v)
    '设置限定条件
        where = t_v
    End Property
   
    Public Property Let Set_Order(t_v)
    '设置排序方式
        order = t_v
    End Property
   
    Public Property Get PageCount
    '返回页数
        PageCount = page_count
    End Property
   
    Public Property Get RecordCount
    '返回总记录数
        RecordCount = record_count
    End Property
   
    Public Property Get PageNum
    '返回当前页
        PageNum = page_num
    End Property
   
    Public Function Open
    '初始化参数,打开记录集,并且返回记录集对象
        Call Init '初始化参数
        Set rs = conn.Execute(Get_Sql)
        Set Open = rs
    End Function
   
End Class
%>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值