快捷搜索:  汽车  科技

vba连接数据库语句(VBA数据库之工作表内连接查询)

vba连接数据库语句(VBA数据库之工作表内连接查询)Sub mynzRecords_56() '第56讲下面看我给出的内连接的代码,其实代码并不难:好了,先给大家简单的解释一下什么是内连接,内连接的查询操作及其特点。内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行。返回与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。在每个表中找出符合条件的共有记录。实例情景,下面的两个工作表,一个是“数据”,一个是“数据1”。我要把其中有型号一样的数据提取出来,但是型号,生产厂,数量来自“数据”工作表,而供应商的数据来自“数据2”的数据。

【分享成果,随喜正能量】人若能心静如水,则万物不侵。静以修心,静以修身,以静视物,以静观心,我静故我在,静了,你的生活才会听你的安排。。 ​​

《VBA数据库解决方案》教程(10090845)是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库之工作表内连接查询

vba连接数据库语句(VBA数据库之工作表内连接查询)(1)

第五十六讲 工作表查询中,内连接Inner join的应用

大家好,我们继续讲解VBA数据库解决方案,今日讲解第56讲内容: 数据表查询中,内连接Inner join的讲解。从这讲开始给大家实例讲解在查询中各种连接方式的应用。为什么到现在才讲解这块内容呢?是的,很多的内容我在之前的文章中已经开始利用了,相信大家已经开始有所了解或许只是概念的欠缺,同时,随着讲解的深入大家发现SQL语句是操作数据库的一个非常重要的工具,我的观点一直是:搭积木思想。不要过多的纠缠于其中的算法,只要会利用就可以。至于为什么这么写,那是专业人员的事情。

1 什么是内连接,内连接的应用场景

好了,先给大家简单的解释一下什么是内连接,内连接的查询操作及其特点。

内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行。返回与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。在每个表中找出符合条件的共有记录。

实例情景,下面的两个工作表,一个是“数据”,一个是“数据1”。我要把其中有型号一样的数据提取出来,但是型号,生产厂,数量来自“数据”工作表,而供应商的数据来自“数据2”的数据。

vba连接数据库语句(VBA数据库之工作表内连接查询)(2)

2 内连接的应用代码及代码解读

下面看我给出的内连接的代码,其实代码并不难:

Sub mynzRecords_56() '第56讲

Dim cnADO rsADO As Object

Dim strPath strSQL As String

Worksheets("56").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

strSQL = "Select a.型号 a.生产厂 a.数量 b.供应商 From [数据$]as a [数据2$] as b Where a.型号=b.型号"

'strSQL = "Select a.型号 a.生产厂 a.数量 b.供应商 From [数据$] as a INNER JOIN [数据2$] 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

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

vba连接数据库语句(VBA数据库之工作表内连接查询)(3)

代码讲解:

1) cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

此语句的代码建立起ADO和Excel的连接,大家可以直接利用,只要是连接07版本以上的EXCEL即可。

2) strSQL = "Select a.型号 a.生产厂 a.数量 b.供应商 From [数据$]as a [数据2$] as b Where a.型号=b.型号"

此语句的代码为一个典型的SQL内连接的语句,用的是WHERE的表达式,大家要注意我字段的写法和定义a b 两个数据表的写法。不可以有丝毫的错误。

3) 'strSQL = "Select a.型号 a.生产厂 a.数量 b.供应商 From [数据$] as a INNER JOIN [数据2$] as b ON a.型号=b.型号"

此语句的代码为一个典型的SQL内连接的语句的另一种写法,用的是的INNER JOIN….on…的表达式,大家要注意这种写法和定义a b 两个数据表的写法。大体上和上面的写法是一致的,读者可以根据自己的习惯利用。

下面看代码的运行:

vba连接数据库语句(VBA数据库之工作表内连接查询)(4)

大家要注意,上述型号为QQ01的供应商为RRR05是取自数据2的数据。

今日内容回向:

1 什么是内连接?

2 内连接的两种表法方式是什么?

3 如果将select后的字段去掉换成*号会是什么样的结果?

本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm

vba连接数据库语句(VBA数据库之工作表内连接查询)(5)

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

vba连接数据库语句(VBA数据库之工作表内连接查询)(6)

vba连接数据库语句(VBA数据库之工作表内连接查询)(7)

vba连接数据库语句(VBA数据库之工作表内连接查询)(8)

【分享成果,随喜正能量】人生无处不修行,能在世事中心静如水,才能在纷扰中安然无恙,非宁静非以致远,想要成就一番大事,必须要有静气。。

猜您喜欢: