VB数据分页[转]





































AbsolutePage 属性 (ADO)
指定当前记录所在的页。
设置和返回值
设置或返回从 1 到 Recordset 对象 (PageCount) 所含页数的长整型值,或者返回以下常量。
常量 说明
AdPosUnknown Recordset 为空,当前位置未知,或者提供者不支持 AbsolutePage 属性。
AdPosBOF 当前记录指针位于 BOF(即 BOF 属性为 True)。
AdPosEOF 当前记录指针位于 EOF(即 EOF 属性为 True)。
说明
使用 AbsolutePage 属性可识别当前记录所在的页码。使用 PageSize 属性可将 Recordset 对象逻辑划分为一系列的页,每页的记录数等于 PageSize(最后一页除外,该页记录数较少)。提供者必须支持该属性的相应功能才能使用该属性。
与 AbsolutePosition 属性一样,AbsolutePage 从 1 开始并在当前记录为 Recordset 中的第一个记录时等于 1。设置该属性可移动到特定页的第一个记录。从 PageCount 属性中可获得总页数。
PageCount 属性 (ADO)
指示 Recordset 对象包含的数据页数。
返回值
返回长整型值。
说明
使用 PageCount 属性可确定 Recordset 对象中数据的页数。“页”是大小等于 PageSize 属性设置的记录组。即使最后页不完整,由于记录数比 PageSize 值少,该页也会作为 PageCount 值中的附加页进行计数。如果 Recordset 对象不支持该属性,该值为 -1 以表明 PageCount 无法确定。
有关页的功能的详细信息,请参阅 PageSize 和 AbsolutePage 属性。
RecordCount 属性 (ADO)
指示 Recordset 对象中记录的当前数目。
返回值
返回长整型值。
说明
使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。
如果 Recordset 对象支持近似定位或书签(即 Supports (adApproxPosition) 或 Supports (adBookmark) 各自返回 True),不管是否完全填充该值,该值将为 Recordset 中记录的精确数目。如果 Recordset 对象不支持近似定位,该属性可能由于必须对所有记录进行检索和计数以返回精确 RecordCount 值而严重消耗资源。
SQL语句的实现
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
10 = 每页记录数
20 = (当前页 + 1) * 每页记录数
以上语句即可以实现分页,但是最后取出的结果排序是升序,如果需要结果集为降序(例如时间),则有两种方法可以处理
1.使用以下语句,但效率可能要降低一些
select * from 表名 b, (select top 10 主键字段,排序字段 from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a order by 排序字段 ) c where b.主键字段 = c.主键字段 order by c.排序字段 desc
2.在ado里处理,将记录集游标移到最后,然后前移
''以下为asp范例
set rsTemp = Server.CreateObject("adodb.recordset")
rsTemp.Open 语句,conn,1,1
rsTemp.MoveLast
for i = 1 to rsTemp.RecordCount
'取值....
rsTemp.MovePrevious
next
经测试,以上分页方法比使用临时表分页速度还要快,并且简单易用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通