手机sql文件怎么打不开了?如何进行代码书写?
大家好,今日继续讲解VBA数据库解决方案的第9讲内容,打开一个数据库记录集,并把数据放到工作表文件中。
可以说数据库的讲解开始进入到了是实际操作的阶段,数据库的内容涉及到知识较多,还是之前强调的,这是VBA中级及以上水平的范畴,对于基础没有牢固的朋友,一定要下功夫把基础打牢,才可以逐渐过渡到数据库的学习。一定要对照VBA代码解决方案,把各个知识点要弄通。
回到我们的话题,实例,有一个数据库文件名为mydata,里面记录了某公司员工的情况,我命名为"职员表",如下面的截图,我只是给出了两个数据,如何把数据库中的数据中符合部门为总务的数据导出到EXCEL文件中,以利于查看呢?
下面我们看看代码将如何书写:
Sub mynzRS1()
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.12.0;Data Source=" & strPath
strSQL = "SELECt * FROM 职员表 WHERe 部门='总务'"
rsADO.Open strSQL, cnADO, 1, 3
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
Cells(1, i + 1) = 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.12.0;Data Source=" & strPath
这里是打开了cnADO这个连接
④strSQL = "SELECt * FROM 职员表 WHERe 部门='总务'"
这是一个SQL语句,这个语句的作用就是,在数据库的"职员表"中查询部门为"总务"的人员
⑤rsADO.Open strSQL, cnADO, 1, 3
这个命令是打开上述的符合SQL查询的记录集,其中strSQL 是代表"SELECt * FROM 职员表 WHERe 部门='总务'",cnADO是我们建立起来的ADO连接,后面的1和3的意义在上一讲我们刚刚见过;
1代表;AdOpenForwardonly (默认值)打开仅向前类型游标。
3代表: AdLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。
⑥ Cells.ClearContents 为了存放数据,在工作表中先清理一下,清空数据
⑦
For i = 0 To rsADO.Fields.Count - 1
Cells(1, i + 1) = 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
着几条代码的意义就是记录集关闭,连接关闭,释放内存。
下面看我们运行后的结果:
到此开篇提到的问题我们的问题就圆满解决了
标签: 手机sql文件怎么打不开了 VBA数据 工作表文件 代码书写
相关阅读
-
手机sql文件怎么打不开了?如何进行代码...
大家好,今日继续讲解VBA数据库解决方案的第9讲内容,打开一个数据... -
电脑自动关机是怎么回事?解决电脑老自动...
当你的电脑出现自动关机的情况的话,那么这可不是什么好的象征,反... -
微信群聊天记录删除后怎么恢复?为你带...
微信聊天记录删除了还能查看吗?苹果手机中的微信聊天记录删除之后如... -
相同4G网络却总比别人慢?教你手机这样...
在如今的网络时代,人手一部手机,手机成了我们生活的全部,每天的... -
电脑虚拟内存设置多少合适?新手小白看过来
虚拟内存的含义就是在磁盘上划出一块区域,用来当作内存来使用,弥... -
路由器花生壳怎么用?路由器花生壳操作...
此次版本主推全新功能:虚拟化应用,该功能可将系统中安装的各类应...