VBA与数据库解决方案第8讲:创建ADO对象,到打开记录集的过程

论坛 期权论坛 期权     
VBA语言专家   2019-6-9 21:27   4751   0
点蓝字关注,回复“VBA”获取专业资料

《VBA代码解决方案》系列书作者
头条百家平台 VBA资深创作者
_______________________________
大家好,我们今天讲解VBA与数据库解决方案第8讲:从创建一个ADO连接,到打开记录集的过程回顾。我们的数据库讲解到本讲,一些基本的概念,以及需要了解的一些基本知识就讲的差不多了,将逐渐过渡到以实际问题的解决为侧重点了。今天我们将之前讲解的内容再大概的回顾一下。
一 数据库的知识点
我们首先讲了数据库,务必要理解的是关系数据库中的关系是指什么。所谓的关系就是表,就是数据库中的表格,那么所谓的关系数据库就是由表格组成的数据库。
二 创建ADO对象
我们讲连接数据库的各种连接方式中,主要讲了ADO的连接方式,这种方式是比较年轻的连接方式,所谓的ADO就是ActiveX DataObjects,对于这个词的解释不必过多的追求,只要知道只是一组数据对象即可。在连接数据库的时候,给出了两种方式的ADO连接。
第一种办法是前期绑定,即引用”MicrosoftActiveX Data Objects 2.x Library”找到其中数字尽可能高一点的版本,创建连接的代码语句如下
Dim cnADO As ADODB.Connection ’声明一个ADO对象
Set cnADO = New ADODB.Connection  ’创建一个ADO对象
或者在声明是直接创建,代码写为:
Dim cnADO As New ADODB.Connection
第二种办法:直接的创建,即后期的绑定:代码如下
Dim cnADO As Object’声明一个ADO对象
Set cnADO = CreateObject("ADODB.Connection")’创建一个ADO对象


三:有了ADO对象后要进行的是连接到数据库:
我之前的代码中有两种连接方式:
第一种: strPath =ThisWorkbook.Path & "\mydata.accdb"
        cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& strPath
第二种:
  With cnADO
         .Provider = "Microsoft.ACE.OLEDB.12.0"
         .Open strPath
       End With
两者写法不一样,其实内容是一样的,就是设置Connection对象的Provider和ConnectionString的两个属性。
四  SQL语句及记录集:


下一个步骤是记录集的操作,这里我们讲了SQL即结构化查询语句,如Sql= "Select 班级,姓名 From [高三年级]"上面Sql语句的意思是从“高三年级”表中查询(提取)所有记录的班级和姓名两个字段。
在打开记录集时同样也有两种方法可以利用;
第一种方法:使用Connection对象的Execute方法
示例1: Set rst = cnADO.Execute(Sql)  执行查询,并将结果保存到rst对象中。
示例2 :Execute 方法
语法:connection.ExecuteCommandText, RecordsAffected, Options
返回: Recordset 对象引用。
参数:
①CommandText    字符串,通常为要执行的 SQL 语句、表名。
②RecordsAffected    可选,长整型变量,提供者向其返回操作所影响的记录数目。
③ Options    可选,长整型值,指示提供者应如何计算 CommandText 参数。
后面两个可选参数我们一般用不到去设置。使用Connection对象的Execute方法返回的结果集,始终为只读、仅向前的游标。也无法取得返回结果集合中的记录数。一般在只需将结果一次性写入工作表中(CopyFromRecordset)时使用,它的好处是写法简洁。如果需要处理返回结果的更多操作,应使用下面的方法。
第二种方法:使用Recordset对象的Open方法
示例1:rst.Open Sql, cnn 同前面的Set rst = cnn.Execute(Sql)一样。
示例2  Open 方法
语法 :recordset.Open Source, ActiveConnection, CursorType, LockType,Options
参数:
①:Source   可选,变体型,通常为SQL 语句、表名。
②:ActiveConnection   可选。变体型,一般为有效 Connection 对象变量名。
③:CursorType   可选,CursorTypeEnum 值,打开 Recordset 时使用游标类型。
④LockType   可选。打开 Recordset 时使用的锁定(并发)类型。
⑤:Options   可选,长整型值,用于指示提供者如何计算 Source 参数。
其中参数③游标是可以指定的类型有四种:
0   AdOpenForwardOnly   默认值)打开仅向前类型游标。
1   AdOpenKeyset            打开键集类型游标。
2   AdOpenDynamic        打开动态类型游标。
3   AdOpenStatic              打开静态类型游标。
如果需要计算返回记录集的记录数(RecordCount),需要将游标指定为adOpenStatic或adOpenKeyset类型,如果需要对游标进行更新,则需要指定为adOpenKeyset或AdOpenDynamic类型。
其中参数④LockType可以选的类型如下:           
1   AdLockReadOnly          (默认值)只读 — 不能改变数据。
2   AdLockPessimistic        保守式锁定,提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。
3   AdLockOptimistic           开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。
4   AdLockBatchOptimistic  开放式批更新—用于批更新模式(与立即更新模式相对)。


到此,我们就把VBA、数据库、ACCESS、ADO、SQL等一些重要的词语概念连接到一起了。
今日内容回向:
1  从数据库到打开记录集的各个步骤是否清楚了呢?
2  如何打开一个SQL记录集?

_____________________________

觉得有启发,点个“在看”,转给朋友们
欢迎你“留言”,和作者直接交流

更多关联阅读








  





分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:200
帖子:40
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP