【分享成果,随喜正能量】当你不再傲慢地抗拒、偏执,与过去的自己握手言和,活出生活的热气腾腾。。
《VBA数据库解决方案》教程(10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库之左外连接查询数据表
第五十九讲 左外连接在数据表中的写法及应用
大家好,我们今天接着讲左外连接,今日讲左外连接在数据表中的应用。对于数据而言,有的放在EXCEL文件中,我们称之为工作表;有的放在数据库中,我们称之为数据表。两者都是数据的存储方式,这也是我在本书中着重讲解的两种数据连接的原因。并不是说数据库就一定是什么数据存储的高级设备,我们工作中最常接触的EXCEL也可以作为数据库来对应的,对于左外连接而言,我在上讲详细的介绍了和EXCEL工作表连接的应用,今日我将讲解这种连接和数据表连接的应用。
1 应用场景的具体分析实例,我们还是用第57讲内容的数据表数据,在mydata2中的数据如下:
在mydata中的数据如下:
我们要知道在数据库mydata2中的所有员工分红情况,这个时候就可以用左外连接了。
2 左外连接提取数据资料的代码及代码解读下面看我给出的代码:
Sub mynzRecords_59() '第59讲 左外连接应用于两个数据表的讲解
Dim cnADO As Object, rsADO As Object
Dim strPath As String, strSQL As String
Worksheets("59").Select
Cells.ClearContents
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "\mydata2.accdb"
strTable = "员工信息"
cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & strPath
strSQL = "SELECT a.员工编号,a.姓名,a.性别,b.金额 FROM " _
& "员工信息 AS a LEFT JOIN [MS Access;Pwd=;Database=" & ThisWorkbook.Path _
& "\mydata.accdb;].员工分红 AS b ON a.员工编号 = b.员工编号"
rsADO.Open strSQL, cnADO, 1, 3
For i = 1 To rsADO.Fields.Count
Cells(1, i) = rsADO.Fields(i - 1).Name
Next
Range("a2").CopyFromRecordset rsADO
ActiveSheet.Columns(rsADO.Fields.Count).NumberFormatLocal = "¥#,##0.00;¥-#,##0.00"
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代码截图:
代码解读:
1) 不知大家注意到否,上述代码和内连接第57讲内容比较,我只是把上面的INNER换成了LEFT.
2) 我们需要注意的是这种连接方式的SQL语句的写法:strSQL = "SELECT a.员工编号,a.姓名,a.性别,b.金额 FROM " _
& "员工信息 AS a LEFT JOIN [MS Access;Pwd=;Database=" & ThisWorkbook.Path _
& "\mydata.accdb;].员工分红 AS b ON a.员工编号 = b.员工编号"
其中的连接第二个数据库的结构大家要千万注意,由于在之前的57讲中我详细的讲过了,不再多说,这里只是提醒大注意:在写代码的时候尽可能不要去书写,而是复制和修正,这样会让你的代码会更容易些。
好了,下面看代码的运行:
今日内容回向:
1 左外连接和内连接返回的结果有什么不同?
2 左外连接连接数据表和工作表的方式有什么不同?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
今日内容回向:
1 什么是左外连接?
2 左外连接的语法是什么样子的?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】独处时,将自己的内心安顿好,找回内心深处的勇气与力量,一路走,不回头。。
,