本人好,今日持续教授教化VBA数据库方案规画的第9讲内容,打开一个数据库记实集,并把数据放到工作表文件中。

  

  可以说数据库的教授教化劈头开始进入到了是理论独霸的阶段,数据库的内容波及到常识较多,仍是曩昔夸大的,这是VBA中级及以上程度的规模,对于基础不有结实的朋侪,一定要下岁月把基础打牢,才可以匆匆过渡到数据库的进修。一定要较量VBA代码方案规画,把各个常识点要弄通。

  

  回到我们的话题,实例,有一个数据库文件名为mydata,外观记实了某公司员工的情况,我定名为"职员表",如下面的截图,我只是给出了两个数据,如何把数据库中的数据中合适部分为总务的数据导出到EXCEL文件中,以利于检查呢?

  

  如何打开数据库记录集合,并把所得的数据显示到工作表文件中

  

  下面我们看看代码将如何钞缮:

  

  Sub mynzRS一()

  

  Dim cnADO, rsADO As Object

  

  Dim strPath, strSQL As String

  

  Dim i As Integer

  

  Set cnADO=CreateObject("ADODB.Connection")

  

  Set rsADO=CreateObject("ADODB.RecordSet")

  

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

  

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

  

  strSQL="SELECT * FROM 职员表 WHERE 部分="总务""

  

  rsADO.Open strSQL, cnADO, 一, 三

  

  Cells.ClearContents

  

  For i=0 To rsADO.Fields.Count - 一

  

  Cells(一, i + 一)=rsADO.Fields(i).Name

  

  Next i

  

  Range("A2").CopyFromRecordset rsADO

  

  rsADO.Close

  

  cnADO.Close

  

  Set rsADO=Nothing

  

  Set cnADO=Nothing

  

  End Sub

  

  代码截图:

  

  如何打开数据库记录集合,并把所得的数据显示到工作表文件中

  

  代码教授教化:

  

  ①

  

  Set cnADO=CreateObject("ADODB.Connection")

  

  Set rsADO=CreateObject("ADODB.RecordSet")

  

  上述代码中新成立了一个连贯,一个记实集,本人要较着的是,这是把持成立的方式产生的连贯,

  

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

  

  给出了数据库的路子

  

  ③cnADO.Open "Provider=Microsoft.ACE.OLEDB.一2.0;Data Source=" & strPath

  

  这里是打开了cnADO这个连贯

  

  ④strSQL="SELECT * FROM 职员表 WHERE 部分="总务""

  

  这是一个SQL语句,这个语句的感召就是,在数据库的"职员表"中盘查部分为"总务"的职员

  

  ⑤rsADO.Open strSQL, cnADO, 一, 三

  

  这个饬令是打开上述的合适SQL盘查的记实集,此中strSQL 是代表"SELECT * FROM 职员表 WHERE 部分="总务"",cnADO是我们成立起来的ADO连贯,后背的一和三的意思在上一讲我们刚才见过;

  

  一代表;AdOpenForwardOnly (默许值)打开仅向前类型游标。

  

  三代表: AdLockOptimistic 凋落式锁定(一一) — 供应者垄断凋落式锁定,只在调用Update 方式时才锁定记实。

  

  ⑥ Cells.ClearContents 为了存放数据,在工作表中先清理一下,清空数据

  

  ⑦

  

  For i=0 To rsADO.Fields.Count - 一

  

  Cells(一, i + 一)=rsADO.Fields(i).Name

  

  Next i

  

  为了熟习上述语句的意思,我们先来看看记实集的一些属性:

  

  rsADO.Fields.Count 是记实后果会集的字段数,

  

  Fields是字段集对象,由单个的Field字段组成,表示Recordset对象的列的纠合。Fields成员的下标从0劈头开始,0表示之一个字段。

  

  上面代码的意思是将必要将字段名写入,也就是说在EXCEL中先写入表头。

  

  ⑧Range("A2").CopyFromRecordset rsADO

  

  为了熟习上述代码的意思,先讲一下CopyFromRecordset方式。

  

  CopyFromRecordset方式是将一个ADO或 DAO Recordset 对象的内容复制到工作表中,复制的起始地位以指定地域为左上角。

  

  句法:Rng.CopyFromRecordset(Data, MaxRows, MaxColumns)

  

  参数:

  

  a Data:Void 类型,必选。复制到指定地域的 Recordset 对象。

  

  b MaxRows:Variant 类型,可选。复制到工作表的记实个数上限。假定省略该参数,将复制 Recordset 对象的局部记实。

  

  c MaxColumns:Variant 类型,可选。复制到工作表的字段个数上限。假定省略该参数,将复制 Recordset 对象的局部字段。

  

  那么,Range("A2").CopyFromRecordset rsADO的意思就是讲所得到的记实纠合,复制到A2单元格为左上角的一个顺应的地域内。

  

  ⑨ rsADO.Close

  

  cnADO.Close

  

  Set rsADO=Nothing

  

  Set cnADO=Nothing

  

  着几条代码的意思就是记实集关闭,连贯关闭,释放内存。

  

  下面看我们运行后的后果:

  

  如何打开数据库记录集合,并把所得的数据显示到工作表文件中

  

  到此开篇提到的问题我们的问题就美满方案了

  

  更多存眷微信干部号:jiuwenwang