数据库

注册

 

发新话题 回复该主题

数据表查询时,左外连接的写法及应用VB [复制链接]

1#
白癜风能怎样根治 https://m.39.net/pf/bdfyy/zqbdf/

大家好,我们今天接着讲左外连接,今日讲左外连接在数据表中的应用。对于数据而言,有的放在EXCEL文件中,我们称之为工作表;有的放在数据库中,我们称之为数据表。两者都是数据的存储方式,这也是我在本书中着重讲解的两种数据连接的原因。并不是说数据库就一定是什么数据存储的高级设备,我们工作中最常接触的EXCEL也可以作为数据库来对应的,对于左外连接而言,我在上讲详细的介绍了和EXCEL工作表连接的应用,今日我将讲解这种连接和数据表连接的应用。

实例,我们还是用第57讲内容的数据表数据,在mydata2中的数据如下/p>

在mydata中的数据如下:

我们要知道在数据库mydata2中的所有员工分红情况,这个时候就可以用左外连接了。下面看我给出的代码:

SubmynzRecords_59()第59讲左外连接应用于两个数据表的讲解

DimcnADO,rsADOAsObject

DimstrPath,strSQLAsString

Worksheets(59).Select

Cells.ClearContents

SetcnADO=CreateObject(ADODB.Connection)

SetrsADO=CreateObject(ADODB.Recordset)

strPath=ThisWorkbook.Path\mydata2.accdb

strTable=员工信息

cnADO.OpenProvider=Microsoft.Ace.OLEDB.12.0;DataSource=strPath

strSQL=SELECTa.员工编号,a.姓名,a.性别,b.金额FROM_

员工信息ASaLEFTJOIN[MSAccess;Pwd=;Database=ThisWorkbook.Path_

\mydata.accdb;].员工分红ASbONa.员工编号=b.员工编号

rsADO.OpenstrSQL,cnADO,1,3

Fori=1TorsADO.Fields.Count

Cells(1,i)=rsADO.Fields(i-1).Name

Next

Range(a2).CopyFromRecordsetrsADO

ActiveSheet.Columns(rsADO.Fields.Count).NumberFormatLocal=¥#,##0.00;¥-#,##0.00

rsADO.Close

cnADO.Close

SetrsADO=Nothing

SetcnADO=Nothing

EndSub

代码截图:

代码解读:

1不知大家注意到否,上述代码和内连接第57讲内容比较,我只是把上面的INNER换成了LEFT.

2我们需要注意的是这种连接方式的SQL语句的写法:strSQL=SELECTa.员工编号,a.姓名,a.性别,b.金额FROM_

员工信息ASaLEFTJOIN[MSAccess;Pwd=;Database=ThisWorkbook.Path_

\mydata.accdb;].员工分红ASbONa.员工编号=b.员工编号

其中的连接第二个数据库的结构大家要千万注意,由于在之前的57讲中我详细的讲过了不再多说,这里只是提醒大注意:在写代码的时候尽可能不要去书写,而是复制和修正,这样会让你的代码会更容易些。

好了,下面看代码的运行:

今日内容回向:

1左外连接和内连接返回的结果有什么不同?

2左外连接连接数据表和工作表的方式有什么不同?

分享 转发
TOP
发新话题 回复该主题