Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > asp函数/类库

asp的通用数据分页类

来源:中文源码网    浏览:168 次    日期:2024-05-02 05:15:01
【下载文档:  asp的通用数据分页类.txt 】


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_Page1 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=CLng(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 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_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_PagePage_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 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 " " Response.Write "
"&PageRs("ID")&"
" Response.Write " "&PageRs("aaaa")&"" Response.Write " "&PageRs("bbbb")&"" Response.Write " "&PageRs("cccc")&"" Response.Write " " 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 %>

相关内容