当前位置: 首页 > article >正文

VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集

《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集

a114ee56fe61e4254af7edd22a769016.jpeg

【分享成果,随喜正能量】不要把别人对你的好,当做理所当然。别人不需要你感谢,并不意味你不需要心存感激。。

第七讲 如何利用Recordset对象打开数据库的数据记录集

我们上一讲讲了Recordset 对象的一些属性、方法和事件。我们今日继续讲解Recordset 对象的相关知识,如何利用Recordset对象打开数据库的数据记录集合。

在讲解之前,我们还要补充些必要的知识点:

12d999720990ca7a5e561f5808b19761.jpeg

1Recordset 对象的更新和访问

1.1 Recordset 对象能够支持两种更新类型

① 立即更新,一旦调用 Update 方法,所有更改被立即写入数据库。

② 批更新,provider 将缓存多个更改,然后使用 UpdateBatch 方法把这些更改传送到数据库。

1.2 另外在访问记录的时候,ADO定义了 4 中不同的游标(指针)类型

① 动态游标 :允许您查看其他用户所作的添加、更改和删除

② 键集游标 :类似动态游标,不同的是您无法查看有其他用户所做的添加,并且它会防止您访问其他用户已删除的记录。其他用户所做的数据更改仍然是可见的。

③ 静态游标 :提供记录集的静态副本,可用来查找数据或生成报告。此外,由其他用户所做的添加、更改和删除将是不可见的。当您打开一个客户端 Recordset 对象时,这是唯一被允许的游标类型。

④ 仅向前游标: 除仅允许在记录中向前滚动之外,其行为类似静态游标。这样,当需要在 Recordset 中单程移动时就可提高性能。

1.3为什么要设计这四个游标类型呢?

这就是搭建数据库的良苦用心,这四种类型也就是客户访问数据库的不同类型,或者称之不同的权限,有的是完全所有权权限访问的,任何访问都可以享用,有的只是拥有部分权限,这要依据用户的性质来决定你所享受的权限了。当然这点和VBA的联系还不是十分的密切,只是讲到数据库和大家顺带说一下。

2 ADO三个对象间的相互联系

2.1 Command对象和Recordset对象依赖于Connection对象的连接;

2.2Command对象结合SQL命令可以取代Recordset对象,但远没有Recordset对象灵活、实用;

2.3Recordset对象它只能实现数据表内记录集操作.记录集(Recordset):对表执行查询操作时,返回的一组特定记录。

b4c51e51ad95beda10ad370aa72817cf.jpeg

3打开一个Recordset记录集

一定要清楚,打开记录集前要连接数据库,连接Connection请参考上一讲内容;

Dim cnADO As New ADODB.Connection

   Dim strPath As String

   strPath = ThisWorkbook.Path & "\mydata.accdb"

   cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

在打开记录集前还要做的工作有:声明Recordset对象,创建Recordset对象

 Dim rsZYS As ADODB.Recordset

 Set rsZYS = New ADODB.Recordset

 rsZYS.Open "职员表", cnADO, 1, 3

 MsgBox rsZYS.RecordCount

 rsZYS.Close

 cnADO.Close

 Set rsZYS = Nothing

Set cnADO = Nothing

所有代码:略

代码截图:

6c7862581c18dafaa344accaec5eb3b4.jpeg

代码解读:

① rsZYS.Open "职员表", cnADO, 1, 3以上代码是打开记录集,。

② MsgBox rsZYS.RecordCount 弹出对话框,提示职员表的信息个数

③ rsZYS.Close

cnADO.Close

  以上代码关闭记录集和数据库的连接,注意要先关闭记录集,再关闭连接,和打开的顺序是相反的。

④ Set rsZYS = Nothing

Set cnADO = Nothing

以上代码释放内存,

运行后会弹出记录数:(数据库内记录行数)

ce4b098c80f08ec724d59c4f7601c1cd.jpeg

这节的内容是我们开始进入数据库内部的操作了,大家不要急,要慢慢来,我数据库的讲解是循序渐进的。

今日内容回向:

1 Recordset 对象 有几种更新方式?

2 Recordset 对象 如何打开记录集?

本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm

2f13b37d0ef7ccd9dec3aa09a9bf3064.jpeg

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

065e491a93139ddc6a2cdbe2436b6207.jpeg


1e98b268908b58a78a69fe06ed193e3a.jpeg


http://www.kler.cn/a/153996.html

相关文章:

  • ggplot2-scale_x_continuous()
  • 本地文件如何推送到git仓库
  • django-ninja 实现cors跨域请求
  • 理解 Python 中的 __getitem__ 方法:在自定义类中启用索引和切片操作
  • 计算机网络-理论部分(二):应用层
  • H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到
  • 新手村之SQL——增删改查条件查询
  • 2024年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷
  • 【halcon】C# halcon 内存暴增
  • SQL优化的面试题
  • c# 责任链模式
  • 1076 Forwards on Weibo (链接表层序遍历)
  • Linux常用命令汇总
  • 【python】python列表的用法记录
  • 第15关 K8s HPA:自动水平伸缩Pod,实现弹性扩展和资源优化
  • 玄学调参实践篇 | 深度学习模型 + 预训练模型 + 大模型LLM
  • java学习part26线程安全
  • Maven终端打包时报Unknown lifecycle phase “.test.skip=true“
  • Java Servlet
  • MySQL安全相关——TDE和数据脱敏功能介绍
  • C++的类和对象(一)
  • 分享88个节日PPT,总有一款适合您
  • 【slab/0x40 UAF】TPCTF2023 - core 一题多解
  • 微信小程序实现打分效果代码整理
  • Golang分布式事务
  • 尝试修改vim光标的思路