vb 数据库 大批量 快速 导入

【分享成果,随喜正能量】 一个人如果怕吃苦、怕吃亏,则成就有限。每件事情的成功,都是有过程的,就是要耐烦、耐久、耐屈、耐苦。。

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数据库中如何批量添加指定数据

vb 数据库 大批量 快速 导入

第四十一讲 批量添加工作表中存在数据表中没有的数据

大家好,今日继续讲解VBA数据库解决方案的第41讲,今日的内容是:工作表中存在的数据只要在数据表中没有,那么批量添加。在前几个章节中我重点给大家讲解了ADO连接EXCEL的方案,通过这个方案在实际的工作中可以解决一系列的实际问题,有的问题简单些,有的问题会复杂些,但总会在工作中看到实例的影子。ADO连接EXCEL中我测试是连接07版本以上的EXCEL,连接采用的是前期和后期相结合的方法。只是出于我个人的一些习惯,有不清楚的朋友要弄清必要的知识点。

VBA数据库解决方案是面向给中级及以上的人员教程,在讲解中侧重于实例的解决,不会再对内部的一些函数啊,语句啊做详细的讲解了,希望基本的知识点还没有完善掌握的朋友,通过《VBA代码解决方案》来完善自己。

1 应用场景的具体分析

今日的内容实例:对于工作表中给出的数据,首先在数据表中确认,如果数据表中没有那么就增加相应的记录。如下面的工作表数据:

vb 数据库 大批量 快速 导入

其中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

部分代码截图:

vb 数据库 大批量 快速 导入

代码讲解:

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语句是一种专门的逻辑语言,如果大家不想专门的去学习,建议大家记住即可。

下面看我们的运行情况:

vb 数据库 大批量 快速 导入

vb 数据库 大批量 快速 导入

vb 数据库 大批量 快速 导入

今日内容回向:

1 如何建立数据库与EXCEL的双重连接?

2 null是0值么?

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

vb 数据库 大批量 快速 导入

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

vb 数据库 大批量 快速 导入

vb 数据库 大批量 快速 导入

【分享成果,随喜正能量】 待人宽厚,便是真正的有福之人,不仅施与好处给别人,更是为以后的自己积了福气。

本文【vb 数据库 大批量 快速 导入】由作者: 悲观锁 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4605.html

(0)
上一篇 2023-03-16 08:53:25
下一篇 2023-03-16 09:00:18

相关推荐

  • linux要学多久_自学linux要多长时间

    今天给大家分享一下我学习linux的历程,我喜欢上linux系统完全就是机缘巧合,大学时上的是网络工程专业,说来惭愧一直到大二上学期我还不知linux为何物,唯一接触过的就是电影里面的黑客敲代码,但是那时候不知道就是linux系统,在我的认知里所谓的技术就是在windows系统点点鼠标,写写代码,总之所有的东西都得在windows桌面,直到后来因为是大一专业…

    2023-03-09
    600
  • 二叉排序树的构造过程_快速排序的详细过程

    描述 给定一个1到n的排列,按顺序依次插入到一棵二叉排序树中,请你将这棵二叉树前序遍历和后序遍历输出。 输入 第一行一个整数n。 接下来一行表示为n个整数,代表1到n的一个排列。 输出 输出所建成的二叉树的前序遍历和后序遍历。 输入样例 10(10个整数)输出样例2 1 6 3 5 4 9 7 8 10(前序) 1 4 5 3 8 7 10 9 6 2(后序…

    2023-03-09
    600
  • python核心编程第二版

    人生苦短,我用Python!Python的学习对于数据分析是不可或缺的工具,虽然处理少量的数据时用Excel很便捷,但也一定不能忽视Python的学习,因为当涉及到大数据量、分维度的数据处理时,一定绕不开Python。即便是资深的数据分析师,也要时刻保持对Python领域专业知识的摄入,那有没有靠谱的Python数据分析书籍推荐呢?当然有。不仅有,还很多。以…

    2023-03-14
    100
  • rc522射频模块使用方法 射频模块是干什么的

    近期入手了一套 RC522 的 RFID 模块,现在把我近期玩这个模块的经历分享给大家,大家可以参照这个过程,上手这个模块的玩法。 刚到手的 RFID 模块与排针是分开的,需要自己焊上。选择焊直排针还是弧排针就看自己的需求了。 RC522 RFID 的板子大概都是下面这个样子的。 翻出吃灰已久的焊枪,一番操作后排针就焊上了,下面是找了一张已经焊好的板子的图。…

    2023-03-18
    200
  • easyfilewebsharing7.2漏洞利用

    攻击环境:攻击者系统:虚拟机下kali linux靶机系统:win10(需要打开Easy File Sharing服务)攻击者ip:10.3.134.27靶机ip:10.3.37.56攻击者和靶机在同一个wifi下,保证在同一网段里,能互相ping通。漏洞利用:EsayFileSharing 注意点:攻击者的虚拟机网络模式应选择桥接模式。 准备工作完成,可以…

    2023-03-13
    600
  • java定时器cron表达式自己生成,java定时器表达式

    Quartz Cron表达式主要用于JAVA Spring定时任务中,用法如下: # 每月的最后1天 @Scheduled(cron = “0 0 18 28–31 * ?”) public void doAtLastDayOfMonth() { final Calendar calendar = Calendar.getInstan…

    2023-03-19
    000
  • 数据库软件图标_sql数据库图标

    今天是日更的 39/365 天 大家好,我是阿常。今天阿常和大家介绍一下SQL以及主流数据库。 ● SQL 简 介 ● 主流数据库 ● MySQL安装 一、SQL简介 SQL 指结构化查询语言,全称 Structured Query Language。 SQL 是用于访问和处理数据库的标准的计算机语言。 SQL 让您可以访问和处理数据库,包括数据插入、查询、…

    2023-03-18
    200
  • iis如何安装,win7怎么安装iis组件

    一、搭建IIS服务器 1.启用功能 单击桌面左下角“开始”菜单,输入“控制面板”,双击进入“控制面板”,打开“程序”,如图表 11和图表 12所示。 进入“启用或关闭Windows功能”如图表 13所示。 在弹出的窗口有许多选项,找到“Internet Information Services”,勾选全部功能,如图表 14所示。 单击“确定”,等待电脑自动安…

    2023-03-12
    200
  • 设置滚动条宽度和颜色,滚动条如何设置大小

    在本文中,我们将深入了解滚动条的世界。我知道,这听起来不太迷人,但相信我,精心设计的页面与匹配的滚动条齐头并进。老式的镀铬滚动条只是不适合那么多。 我们将研究滚动条的细节,然后看看一些很酷的例子。 滚动条的组成部分 要设置滚动条的样式,您需要熟悉滚动条的解剖结构。请看这张图: 这里要记住的两个主要组成部分是: scrollbar track是滚动条下方的背景…

    2023-03-16
    000
  • until和not until的区别

    强调句的用法大家肯定已经很熟悉了,尤其是it做形式主语的强调句型。可是当句子里有not…until…的时候,很多朋友还是会搞混。今天我就跟大家一起挖一挖not…until…的强调句用法。 强调句的结构很简单,就是It is+被强调部分+that/who+…。比如陈述句:Tom lent me money when I was in trouble.我需要强调…

    2023-03-12
    600

发表回复

登录后才能评论
返回顶部
错说博客上线啦!