排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
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语言専攻
2022-04-02
23
【分享成果,随喜正能量】 一个人如果怕吃苦、怕吃亏,则成就有限。每件事情的成功,都是有过程的,就是要耐烦、耐久、耐屈、耐苦。。
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数据库中如何批量添加指定数据
第四十一讲 批量添加工作表中存在数据表中没有的数据
大家好,今日继续讲解VBA数据库解决方案的第41讲,今日的内容是:工作表中存在的数据只要在数据表中没有,那么批量添加。在前几个章节中我重点给大家讲解了ADO连接EXCEL的方案,通过这个方案在实际的工作中可以解决一系列的实际问题,有的问题简单些,有的问题会复杂些,但总会在工作中看到实例的影子。ADO连接EXCEL中我测试是连接07版本以上的EXCEL,连接采用的是前期和后期相结合的方法。只是出于我个人的一些习惯,有不清楚的朋友要弄清必要的知识点。
VBA数据库解决方案是面向给中级及以上的人员教程,在讲解中侧重于实例的解决,不会再对内部的一些函数啊,语句啊做详细的讲解了,希望基本的知识点还没有完善掌握的朋友,通过《VBA代码解决方案》来完善自己。
1 应用场景的具体分析
今日的内容实例:对于工作表中给出的数据,首先在数据表中确认,如果数据表中没有那么就增加相应的记录。如下面的工作表数据:
其中100042 100043的记录在数据库的数据表中是没有的,我们要把这两条的记录增加进数据表中。怎么做到呢?
我们先分析一下:首先我们要检查这些记录在数据表中有没有,对于没有的才增加记录,那么我将建立一个记录集。这个记录集就是在工作表中存在而数据表为null 的记录。
2 批量增加工作表中有而数据表中没有数据的代码及代码解读
代码:
Sub mynz_41() '第41将 在数据表没有而工作表中存在的数据在数据表中批量增加的方案
Dim cnADO, rsADO As Object
Dim strPath, strTable, strSQL, strMsg As String
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 * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "当前记录数为:" & rsADO.RecordCount
rsADO.Close
'加入没有记录,那么增加
strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$" _
& Range("A1").CurrentRegion.Address(0, 0) & "] A " _
& "LEFT JOIN " & strTable & " B " _
& "ON A.员工编号=B.员工编号 WHERE B.员工编号 IS NULL"
Set rsADO = CreateObject("ADODB.Recordset")
rsADO.Open strSQL, cnADO, 1, 3
If rsADO.RecordCount > 0 Then
strSQL = "INSERT INTO " & strTable & strSQL
cnADO.Execute strSQL
strMsg = strMsg & vbCrLf & rsADO.RecordCount & "条记录已添加到数据库!"
Else
strMsg = "这些记录都已经存在,没有记录添加到数据库!"
End If
MsgBox strMsg, vbInformation, "提示"
rsADO.Close
'汇报给用户记录数
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "最新的记录数为:" & rsADO.RecordCount
rsADO.Close
'释放内存
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
部分代码截图:
代码讲解:
1) '加入没有记录,那么增加
strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$" _
& Range("A1").CurrentRegion.Address(0, 0) & "] A " _
& "LEFT JOIN " & strTable & " B " _
& "ON A.员工编号=B.员工编号 WHERE B.员工编号 IS NULL"
Set rsADO = CreateObject("ADODB.Recordset")
rsADO.Open strSQL, cnADO, 1, 3
If rsADO.RecordCount > 0 Then
strSQL = "INSERT INTO " & strTable & strSQL
cnADO.Execute strSQL
strMsg = strMsg & vbCrLf & rsADO.RecordCount & "条记录已添加到数据库!"
Else
strMsg = "这些记录都已经存在,没有记录添加到数据库!"
End If
MsgBox strMsg, vbInformation, "提示"
rsADO.Close
在这部分代码中实现了建立一个记录集,这个记录集是工作表中存在而数据表中是不存在的,这里要特别注意的是SQL语句的写法:
strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$" _
& Range("A1").CurrentRegion.Address(0, 0) & "] A " _
& "LEFT JOIN " & strTable & " B " _
& "ON A.员工编号=B.员工编号 WHERE B.员工编号 IS NULL"
这个SQL的语句中分别连接了EXCEL和数据表,条件是A中存在的在B中为NULL的记录.
2) 本书讲解的是VBA数据库的解决方案,一些SQL语句没有做详细的讲解,大家可以记住即可。SQL语句是一种专门的逻辑语言,如果大家不想专门的去学习,建议大家记住即可。
下面看我们的运行情况:
今日内容回向:
1 如何建立数据库与EXCEL的双重连接?
2 null是0值么?
本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】 待人宽厚,便是真正的有福之人,不仅施与好处给别人,更是为以后的自己积了福气。
数据表
大数据
数据库
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨