【分享成果,随喜正能量】 允许不同,展现包容,做一个欢喜的人,去呈现生命的绽放;做一个深刻的人,去镌刻这生命的积淀和悠远。 ??
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第37讲:ADO查询多条件数据的组合
第三十八讲 利用ADO实现多数据工作表间查询
大家好,今日继续讲解VBA数据库解决方案,今日内容是利用ADO实现两个工作表间的查询。在VBA的应用中,我一直在推崇的是VBA实现数据处理的自动化,也在不同的章节中讲如何利用VBA进行数据的自动处理。在数据处理中,查询一直是一大块的内容,在工作表中,我们可以应用的方法有:查找CTRL+F,筛选,定位,进而有工作表函数LOOKUP;如果您已经上手了VBA,查找就变的非常简单了,有多个方案可以利用,有单元格的直接判断,有FIND,FINDNEXT等系列的方案。今日我们讲的内容和以往有所不同,是利用ADO及SQL语句来实现的查找。
1 应用场景的具体分析
实例:在我的工作表中“两表查询数据”页中有若干数据,如下:
在另外的一页工作表中如如下数据:
现在要通过ADO,连接到EXCEL,实现在“两表查询数据”的工作表中查到上述数据并把后面的C列、E列、E列的查询结果复制到这页的相应位置。这个功能类似于我推出的一个VBA查找工具,这里我们要用ADO来实现这个要求。
2 ADO实现多数据工作表间查询的代码及代码解读
代码如下:
Sub mynz_38()
[代码见教程]
End Sub
代码截图:
代码讲解:
1) strSQL = "select F3,F4,F5 from [两表查询数据$] where F1='" & aa & "' and F2='" & bb & "'" 此处代码实现了在工作表“两表查询数据”中找到第一列等于aa,第二列等于bb的结合,同时返回的值是集合的第3,4,5列的数据
2) If rsADO.RecordCount > 0 Then
Sht1.Cells(i, 3).CopyFromRecordset rsADO
Else
MsgBox ("第" & i & "行数据,没有找到!")
End If
上述代码判断记录数为多少,如果有记录则返回有数据,如果没有记录那么返回的提示是没有找到。注意此处的代码如果改为rsADO.RecordCount =1是否可行?上述代码中如果返回值是多行记录会有什么不同呢?请读者思考
代码的运行:
本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm
今日内容回向:
1 在代码解释中的问题思考。
2 这个例子是非常有用的实例,还可以实现多数值的对应查找,代码将如何修正?
【分享成果,随喜正能量】 行走生活,总是要提醒自己,有信心才有希望,改变一些看法,凝聚一份信心,再一次、再一次的爱上生活,那么就在不知不觉中熬过许多创痛和苦涩。。 ???