找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 73|回复: 1

[原创]自己写的一个分页类(适合ACCESS数据库)

[复制链接]
发表于 2010-1-15 00:59:14 | 显示全部楼层 |阅读模式 IP:江苏扬州
<!--#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毫秒左右.
呵呵,是慢了点,偶也是刚学学写这个"类",会努力完善它,如果你有什么好的建议可以跟贴
大虾表见笑.呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 11:33 , Processed in 0.229853 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表