前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA与数据库——ADO

VBA与数据库——ADO

作者头像
xyj
发布2021-04-26 11:32:24
1.9K0
发布2021-04-26 11:32:24
举报
文章被收录于专栏:VBA 学习VBA 学习

ADO (ActiveX Data Objects,ActiveX数据对象)和字典Dictionary一样,就是Windows系统做好了的一个东西,是一种叫做COM对象的东西。

打开VBA编辑器,添加引用Microsoft ActiveX Data Objects 2.8(版本可能不同) Library。按F2打开对象浏览器看看它的属性、方法:

非常多,单看这个很难掌握!

建议可以看看《ADO编程技术》这本书,讲的挺详细的。

这里以自己的理解简单说说ADO:

Conection

操作数据库和操作文件类似,像Open读取文件里那样,首先就是要打开文件,获取一个指向文件的指针。

操作数据库也差不多,首先也得打开数据库,ADO里叫做连接数据库,首先New一个Connection类,然后调用Open方法来连接数据库,只有连接成功了才能去操作数据库。

代码语言:javascript
复制
Set AdoConn = New ADODB.Connection
AdoConn.Open Provider字符串

然后就可以使用AdoConn,调用它的方法去执行sql语句来操作数据库。

Recordset

ADO读取数据库的数据,不管是使用Connection的Excute、Recordset的Open、Command的Excute,都是读取到Recordset这个类中,之后才能在VBA里进行进一步的操作。

所以,想对数据库读取到的数据进行更多的操作,必须要了解一下这个对象,Recordset的数据也可以想象是一个Excel表格,仍然是有行、列的,但是它不是直接使用行的索引来读取数据,而是内部有一个指针(这个指针我们无法直接操作),这个指针指向了当前行的数据,如果要处理其他行,必须使用Move、MoveNext等移动的操作去移动指针,只有指针指向的数据才能处理。

Excel VBA为了方便操作,在Range对象上实现了CopyFromRecordset 方法,方便使用者直接从Recordset对象中读取数据到单元格,这是Excel VBA使用ADO来操作数据库的一个方便之处,直接从Recordset对象中复制数据,不需要去写循环语句等操作处理。

Command

Command这个类的主要目的就是为了能够重复执行一个类似的操作,使用这个类要处理好Parameters,没接触过是有点不好理解的。

这种使用方式的一种场景是:

需要根据某个字段的值去数据库中查找数据,如果条件数据是在数据库中的,使用Left Join操作就可以,但是如果数据是在VBA的数组中,这时候就需要用到Command,每次循环都只需要改变条件字段的值就可以,可以加快数据库操作的速度。

举个自己理解的例子:

比如工人做零件,在做零件之前,需要打开机床,准备好工具、原材料等等,这些准备工作做好之后才能开始制作零件,如果他只做1个零件,那么做完这1个零件之后,他又要关闭机床,收拾好工具等才算完成了工作。

但是,如果他是做100个零件,那么,那些准备工作以及完工后的收拾的工作他不会傻到去做100遍,而只要做一次。

Command就是为了这种情况准备的,那些准备的工作只会做一遍,所以能够加快数据库操作的速度。

总结

初学者只要掌握一些简单的操作就可以,

  • 连接数据库得到Connection
  • Connection的Execute执行sql语句,update、insert等不需要返回数据的执行完了就结束
  • select语句执行后就需要去操作Recordset
  • 如果是重复执行某些操作,就换成Command去处理

其他更细致、高级的操作要随着使用的深入,对数据库的认识加深再逐步去学习。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 VBA 学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Conection
  • Recordset
  • Command
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档