排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
数据库右外连接查询的应用
数据库右外连接查询的应用
VBA语言専攻
2023-02-01
0
【分享成果,随喜正能量】不要着急,最好的总会在最不经意间出现,纵使伤心,也不要愁眉不展,因为你不知道谁会爱上你的笑容。。
《VBA数据库解决方案》教程(10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数据库右外连接查询的应用
第六十一讲 右外连接在数据表查询中的应用
大家好,今日继续讲解VBA数据库解决方案,今日讲解的是第61讲,右外连接在数据表中的应用。各种的连接方式我在最近讲解中逐渐展开,每种的连接我都分别讲在工作表中的应用和数据表中应用,尽可能的让大家全面的了解到连接的应用。
1 应用场景的具体分析
今日的内容是右外连接在数据表查询中的应用。上一讲中我们讲了右外连接的意义和特点,并讲了工作表中的应用,在数据表中的应用也比较类似,我们还是以两个数据表为例进行说明。
实例,如下的数据表,其一是mydata2中的数据如下:
其二是mydata中的数据如下:
我们要在两个工作表间建立一个右连接,连接的条件是员工编号相同,提取字段为:a.员工编号,a.姓名,a.性别,b.金额 ,大家可以想象一下将会返回什么样的一个结果呢?
2 右外连接在数据表中应用的代码及代码解读
下面我们先用代码来实现我的上述要求,我给出的代码如下:
Sub mynzRecords_61() '第61讲 右外连接应用于两个数据表的讲解
Dim cnADO As Object, rsADO As Object
Dim strPath As String, strSQL As String
Worksheets("61").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
'建立右连接的SQL语句
strSQL = "SELECT a.员工编号,a.姓名,a.性别,b.金额 FROM " _
& "员工信息 AS a right JOIN [MS Access;Pwd=;Database=" & ThisWorkbook.Path _
& "\mydata.accdb;].员工分红 AS b ON a.员工编号 = b.员工编号"
rsADO.Open strSQL, cnADO, 1, 3 '打开rs
'提出表头数据
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) 上述代码实现了一个右外连接的实例,大家尽可能的利用现有代码,复制后简单的修正使用,不要去书写。
2) 和之前的左外连接比较我只是将left 修正为right,虽然是一个参数的变化,但会给我们带来很大的不同。
3) '建立右连接的SQL语句
strSQL = "SELECT a.员工编号,a.姓名,a.性别,b.金额 FROM " _
& "员工信息 AS a right JOIN [MS Access;Pwd=;Database=" & ThisWorkbook.Path _
& "\mydata.accdb;].员工分红 AS b ON a.员工编号 = b.员工编号"
这句代码中以员工分红的表为b,以员工信息 为表a,在b表连接时我给出的代码是 [MS Access;Pwd=;Database=" & ThisWorkbook.Path & "\mydata.accdb;].员工分红其中MS指的是Microsoft的略写,数据库是没有密码的。
下面我们看得出的结果:
和你之前的想象结果是否一致呢?为什么最后三行前三列数空值呢?
今日内容回向:
1 右外连接在数据表中如何实现查询呢?
2 上述的数据中为什么最后三行前三列数空值呢?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】去看山河万里,终究都是在这内心的情怀世界;去看岁月时光,终究在见证着自我向前的一种突围和成长。。
数据表
大数据
数据库
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨