<%
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
%>