| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:[原创]自己写的一个分页类(适合ACCESS数据库)
取消只看楼主 加入收藏
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
 问题点数:0 回复次数:0 
[原创]自己写的一个分页类(适合ACCESS数据库)

<!--#include file="conn.inc"-->
<%
'==============================================
'Description = ACCESS 2000及其以上版本通用分页类
'Athor = conn
'Date = 2006-05-26
'QQ =53448494
'==============================================
Class Acc_Page

Private Acc_Conn
Private Acc_PageSize
Private Acc_Page
Private Acc_KeyWord
Private Acc_TableName
Private Acc_Items
Private Acc_PageCount
Private Acc_rsCount

'======================================
'类的开始
'======================================
Private Sub Class_Initialize()

End Sub

'======================================
'得到数据库的连接字段
'======================================
Public Property Let Conn(ByVal objConn)
Set Acc_Conn=objConn
End Property

'======================================
'得到分页的数据-每页显示多少条数据
'======================================
Public Property Let PageSize(ByVal intPageSize)
Acc_PageSize=intPageSize
End Property

'======================================
'得到当前页码
'======================================
Public Property Let Page(ByVal intPage)
Acc_Page=intPage
End Property

'======================================
'得到选取的内容的字段
'======================================
Public Property Let Items(ByVal str)
Acc_Items=str
End Property

'======================================
'得到主键
'======================================
Public Property Let KeyWord(ByVal str)
Acc_KeyWord=str
End Property

'======================================
'得到表名
'======================================
Public Property Let TableName(ByVal str)
Acc_TableName=str
End Property

'======================================
'得到当前页的数据表
'主要用rs.GetRows方法
'======================================
Public Function GetReslut()
Acc_rsCount=Acc_Conn.execute("SELECT Count("&Acc_KeyWord&") FROM ["&Acc_TableName&"]")(0)
If Acc_rsCount Mod Acc_PageSize=0 Then
Acc_PageCount=Acc_rsCount/Acc_PageSize
Else
Acc_PageCount=Int(Acc_rsCount/Acc_PageSize)+1
End If
If Acc_Page>Acc_PageCount Then Acc_Page=Acc_PageCount
Dim rs,sql
Set rs=Server.CreateObject("Adodb.RecordSet")
sql="SELECT "&Acc_Items&" FROM ["&Acc_TableName&"] ORDER BY "&Acc_KeyWord&" DESC"
rs.open sql,Acc_Conn,1,1,&h0001
rs.absoluteposition=Int((Acc_Page-1)*Acc_PageSize+1)
GetReslut=rs.GetRows(Acc_PageSize)
rs.close:Set rs=Nothing
End Function


'======================================
'写在表底步的一些总结性信息
'说明:必须先调用GetResult(),方可调用此法
'======================================
Public Sub WriteLine()
Response.Write("<span style='font-size:14px;'>共有<font color='RED'>"&Acc_rsCount&"</font>条相关信息 <font color='RED'>"&Acc_PageSize)
Response.Write("</font>条/页 当前<font color='RED'>"&Acc_Page&"</font>/"&Acc_PageCount&"页")
Response.Write(Space(5)&"<a href='?page="&Acc_Page-1&"'>上一页</a>")
Response.Write(" <a href='?page="&Acc_Page+1&"'>下一页</a> 跳至")
Response.Write("<select OnChange='window.location.href=this.options[this.selectedIndex].value'>")
For i=1 To Acc_PageCount
If i=Acc_Page Then
Response.Write("<option value='?page="&i&"' selected>"&i&"</option>")
Else
Response.Write("<option value='?page="&i&"'>"&i&"</option>")
End If
Next
Response.Write("</select>页</span><br />")
End Sub

'======================================
'类的结束
'======================================
Private Sub Class_Terminate()
If IsObject(Acc_Conn) Then
Acc_Conn.close:Set Acc_Conn=Nothing
End If
End Sub

End Class

'**********************************************************************************************************************************

'=====================================
'调用实例
'=====================================
Dim S_Time:S_Time=timer()
Set News=New Acc_Page
News.Conn=conn
News.TableName="info"
News.KeyWord="ID"
News.PageSize=30
If Request.QueryString("page")="" Or Request.QueryString("page")<1 Then
News.Page=1
Else
News.Page=CLng(Request.QueryString("page"))
End If
News.Items="ID,title,content,dat"
Dim Data:Data=News.GetReslut()
For i=0 To UBound(Data,2)
For j=0 To UBound(Data)
Response.Write("<span style='font-size:14px;'>"&Left(Data(j,i),20)&"&nbsp;")
Next
Response.Write("<br />")
Next
Response.Write("<br /></span>")
News.WriteLine()
Dim E_Time:E_Time=timer()
Response.Write("本页执行时间:"&FormatNumber((E_time-S_time),3)*1000&"毫秒")
Set News=nothing
%>

我的机器测试的数据:12W条数据,平均的时间在95毫秒左右.
呵呵,是慢了点,偶也是刚学学写这个"类",会努力完善它,如果你有什么好的建议可以跟贴
大虾表见笑.呵呵
搜索更多相关主题的帖子: 数据库 ACCESS 
2006-05-26 09:32
快速回复:[原创]自己写的一个分页类(适合ACCESS数据库)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.093355 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved