Excel +VBA +ADO+Access数据库分页显示
新建类模块PageHelper
Option ExplicitDim rs As ADODB.Recordset
Dim rsds As ADODB.Recordset
Dim rsPage As Long '当前处于第几页
Dim labelName As String'分页查询Sub queryPageFromRS(r As ADODB.Recordset, lbName As String)rsPage = 1labelName = lbNameSet rs = rCall addrows(rsPage) '调用子过程显示第一页记录End Sub'分页查询Sub queryPage(sql As String, lbName As String)rsPage = 1labelName = lbNameDim cba As New DBhelperSet rs = cba.query(sql)Call addrows(rsPage) '调用子过程显示第一页记录End SubPrivate Sub clearContents()Range("A4:AA18").clearContentsEnd Sub
Private Sub addrows(mypage As Long)On Error Resume NextDim i As Long, j As LongDim num As Long, endrow As Long '记数'创建局部recorset对象rsds,保存rs 记录集中当前页的数据Set rsds = New ADODB.RecordsetFor i = 0 To rs.fields.Count - 1'append追加的意思,字段名称,字段类型,字段大小rsds.fields.Append rs.fields(i).Name, rs.fields(i).Type, rs.fields(i).DefinedSizeNext'打开局部recorset 对象rsdsrsds.Openrs.PageSize = 15 '重置rs 每页显示的记录条数(pagesize 表示记录集的每页的记录条数)rs.AbsolutePage = mypage '重置rs的当前记录页(跳到这页的第一条记录)'当rs 的当前记录页保存到rsds 之中For i = 1 To CLng(rs.PageSize)If rs.EOF Then Exit Forrsds.AddNew '添加一条记录For j = 0 To rs.fields.Count - 1rsds.fields(j).value = rs.fields(j).valueNext jrs.MoveNextNext irsds.MoveFirst '定位到第一条记录clearContents'添加记录i的类型在32位系统自动为integer或long,在64位自动为longlong,数据转换,不然会编译错误类型不匹配For i = 4 To CLng(rsds.RecordCount) + 3num = num + 1Cells(i, 1) = IIf(mypage > 1, num + rs.PageSize * (mypage - 1), num)Cells(i, rsds.fields.Count + 1) = CStr(rsds.fields(0))For j = 1 To rsds.fields.Count - 1Cells(i, j + 1) = rsds.fields(j)If rsds.fields(j).Type = adDate ThenCells(i, j + 1).NumberFormatLocal = "YYYY-MM-DD"End IfNext jrsds.MoveNextNext i' ActiveSheet.OLEObjects(labelName).Object.caption = "第 " & mypage & "/" & rs.PageCount & " 页,共" & rs.RecordCount & "条记录"
ActiveSheet.Shapes(labelName).TextFrame.Characters.Text = "第 " & mypage & "/" & rs.PageCount & " 页,共" & rs.RecordCount & "条记录"' plabelText = "第 " & mypage & "/" & rs.PageCount & " 页,共" & rs.RecordCount & "条记录"' lb = ActiveSheet.OLEObjects(labelName).Object'endrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row
'If endrow > 3 ThenWith Range("A4" & ":AA18").Borders.LineStyle = xlContinuous.Weight = xlThin.ColorIndex = 37End With
'End IfEnd Sub'切换到第一页Sub dyy_Click()rsPage = 1Call addrows(rsPage)End Sub
'切换到上一页Sub syy_Click()If rsPage > 1 And CLng(rs.PageCount) > 0 ThenrsPage = rsPage - 1Call addrows(rsPage)End IfEnd Sub'切换到下一页Sub xyy_Click()If rsPage <> CLng(rs.PageCount) And CLng(rs.PageCount) > 0 ThenrsPage = rsPage + 1Call addrows(rsPage)End IfEnd Sub
'切换到最末页Sub zmy_Click()'64位longlong类型 转换32位为longrsPage = CLng(rs.PageCount)Call addrows(rsPage)End SubPrivate Sub Class_Terminate()
Set rs = Nothing
Set rsds = Nothing
End Sub
Excel +VBA +ADO+Access数据库分页显示相关推荐
- vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...
原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...
- vba读取服务器accsess文件,vba 服务器 access数据库
vba 服务器 access数据库 内容精选 换一换 创建外部服务器,用于定义OBS服务器的信息,供外表调用.创建外部服务器的详细语法,请参见CREATE SERVER.如果您将使用普通用户在自定义数 ...
- VBA 连接Access数据库和Excle
VBA 连接数据库步骤: 1.创建连接对象 2.打开连接 3.执行SQL 4.关闭连接 5.释放连接对象 前提:在[工具]>[引用]ADO库 Sub conDatabase()Dim con A ...
- Excel VBA 链接 Oracle数据库
标题 前言 准备 第一步 远程数据库的准备 第二步 本地免安装客户端下载 1.下载基本包 1.1 包下载地址 1.2 网盘下载地址 2.配置oracle 网络文件 2.1tnsnames.ora 文件 ...
- access数据库导入oracle数据库,将excel表格导入access数据库再导入oracle数据库方法-如何将ACCESS数据库的文件导入到ORACLE中?...
怎样将excel中的数据导入到oracle数据库中 敢问楼主,表A存在几列,表B存在几列,表C存在几列 常规方法(表中列和excel中列一致) PLSQL 中 : select * from A up ...
- ASP excel导出/导入Access数据库(代码+实例下载)
Excel导出函数 <% Sub ExportToExcel Response.ContentType = "application/vnd.ms-Excel" ...
- Android实现将Excel文件导入sqllite数据库并显示到界面
我们在做Android时通常使用安卓系统自带的sqllite数据库,然而sqllite数据库不像Access.MYSQL等其他数据库,可以直接将数据大量的复制粘贴.我们下载的SQLite Expert ...
- vba 连接access数据库 方法二
Sub 连接数据库() '第一步,引用ADO 工具,工具->引用->microsoft ActiveX Data Objects 6.1 Library '第二步,创建连接对象 '1 .声 ...
- VBA 连接ACCESS数据库
在外部进行变量声明 Public connectionString As String '连接数据库语句 Public SQL As String Public con As ADODB.Connec ...
最新文章
- Factorized TDNN(因子分解TDNN,TDNN-F)
- 重磅 | 神策数据微信生态数字化运营解决方案上线!
- 高并发服务遇 redis 瓶颈引发的事故
- Taro+react开发(53) Taro提示操作
- java手机象棋软件下载,Java手机网络版象棋游戏附源码JAVA游戏源码下载
- python定义只有一个元素的元组
- java移动元素_如何通过箭头键连续/平滑地移动元素?
- Python 数据分析实战,揭秘国内顶尖医院分布现状!
- 20145203盖泽双《网络对抗技术》后门原理与实践
- 插件开发之360 DroidPlugin源码分析(五)Service预注册占坑
- 重装的电脑360打补丁都是智能忽略
- 计算机ppt音乐,PPT制作音乐的步骤
- c语言1117查找数组元素,路雪军 Carl
- C/C++学习:小游戏的制作
- JS格式化中国标准时间
- PFC离散元与FLAC3D数值仿真核心技术与应用” 线上培训
- hdu 5467 Clarke and hunger games (lct)
- SQL零基础入门学习(十一)
- Python 正则表达式 match、findall、search
- 属于你的舞台——安卓优化大师UI设计
热门文章
- 【牛客】链表的回文结构
- Kotlin中的面向对象(二)
- 还在使用Postman吗?out了兄弟,快来解锁Apifox这款国产化API工具吧
- matlab中scr,基于matlab生成的scr文件,实现autocad曲线绘制,代码问题
- 报告:ICO项目2019年第一季度融资总额仅1.18亿美金,相较于2018年同比下降逾58倍...
- Java程序界面设计
- Python:用【Win32】模块,结合Word通配符替换,将Word文档表格的部分内容替换为加粗
- 分享前端获取微信之类图标的网站
- 手机LBS位置应用服务盘点
- android span 下划线,Android TextView实现部分文字(超链接/Span)点击事件、变色、去除下划线...