pages.asp
来自「医院专家挂号系统设计」· ASP 代码 · 共 270 行
ASP
270 行
<!--<meta http-equiv="Content-Type" content="text/html; charset=gb2312">-->
<%
Class PageClass
Private Connection '连接数据库的外部Connection对象
Private Rs 'RecordSet对象
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_Page<Page_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 Value<1 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=CInt(Value)
End If
If Value<1 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 oCondtion,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
'如果数据库连接不存在,表名未知或排序方式未知,返回RS=Nothing
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_Count<1 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_Page<Page_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_Page<1 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 InPos<1 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
''生成导航栏
Public Function GetPageBar(strURL)
dim strPageChoose
If InStr(strURL,"?")<>0 Then
strURL = strURL&"&Page="
Else
strURL = strURL&"?Page="
End If
if Page_Count = 1 then
GetPageBar = ""
exit function
end if
'如果不是第一页
if Cur_Page > 1 then
strPageChoose = strPageChoose&"<a href='"&strURL&(Cur_Page-1)&"'>[上一页]</a>"
end if
'计算页选择栏
for i=1 to Page_Count
if Cur_Page = i then
strPageChoose = strPageChoose&"<b>["&i&"]</b>"
else
strPageChoose = strPageChoose&"<a href='"&strURL&i&"'>["&i&"]</a>"
end if
next
if Cur_Page < Page_Count then
strPageChoose = strPageChoose&"<a href='"&strURL&(Cur_Page+1)&"'>[下一页]</a>"
end if
strPageChoose = strPageChoose & "<Font color='#FFFFFF'>......</Font>"
GetPageBar = strPageChoose
End Function
End Class
%>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?