作者:绿色风
分类:
时间:2022-08-17
浏览:152
楼主 amulee |
Q:如何利用ADO组件对SQL查询结果进行分页显示? A:实现分页显示,如动画所示:
利用ADO组件Recordset对象的PageSize属性可以设置每页记录数,AbsolutePage可以设置当前页。参考代码如下:
- Sub 分页显示()
- Dim AdoConn As New ADODB.Connection
- Dim AdoRst As New ADODB.Recordset
- Dim TotalPage%
- Dim CurPage%
- Dim i%, j%
- '打开数据库链接并执行查询
- AdoConn.Open " Provider=Microsoft.ACE.OLEDB.12.0;" & _
- "Data Source=" & ThisWorkbook.FullName & _
- ";Extended Properties=""Excel 12.0;HDR=YES"";"
- AdoRst.Open "Select * From [数据$]", AdoConn, 1, 1
- '设定每页记录数
- AdoRst.PageSize = 20
- '计算总页数
- TotalPage = WorksheetFunction.Ceiling(AdoRst.RecordCount / AdoRst.PageSize, 1)
- '计算当前页
- '获取按钮名称分情况讨论
- Select Case Sheet2.Shapes(Application.Caller).AlternativeText
- Case "下一页"
- CurPage = Range("B1") + 1
- Case "上一页"
- CurPage = Range("B1") - 1
- Case "首页"
- CurPage = 1
- Case "末页"
- CurPage = TotalPage
- End Select
- '若超过范围则退出
- If CurPage > TotalPage Or CurPage = 0 Then
- AdoRst.Close
- AdoConn.Close
- Exit Sub
- End If
- '重新写入当前页和总页数
- Range("B1") = CurPage
- Range("D1") = TotalPage
- '设定当前页
- AdoRst.AbsolutePage = CurPage
- '结果输出
- Range("A3:G22").ClearContents
- For i = 1 To AdoRst.PageSize
- If AdoRst.EOF Then Exit For
- For j = 1 To AdoRst.Fields.Count
- Cells(i + 2, j) = AdoRst.Fields(j - 1).value
- Next j
- '下移一条记录
- AdoRst.MoveNext
- Next i
- '关闭
- AdoRst.Close
- AdoConn.Close
- End Sub
分页显示.rar |
2楼 水星钓鱼 |
感谢分享。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一