3704对象关闭时_VBA与数据库第7讲:如何利用Recordset对象打开数据库的记录集合...

8e438299a42f384d09b740fdb43121d0.png

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

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

560384db7b3e3d85b275cfd5d11143da.png

一 Recordset 对象的更新和访问

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

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

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

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

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

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

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

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

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

二 通过ADO的三个对象的讲解我们可以看到三者间的相互联系:

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

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

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

4f5555b793c127c1561cabe6fe8fab16.png

三:下面我们打开一个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

23dca09146e934faa0bc3f9ad656311a.png

上述语句中代码

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

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

③ rsZYS.Close

cnADO.Close

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

④Set rsZYS = Nothing

Set cnADO = Nothing

释放内存,

运行后会弹出记录数:(数据库内只有一条记录)

4b479a3404b95ee71a8adb0707584940.png

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

今日内容回向:

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

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

《VBA代码解决方案》系列电子书,是我将一些非常实用的VBA内容结集成册,PDF格式文件,朋友们可以从中查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值