VBA数据库解决方案第九讲:把数据库的内容在工作表中显示

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库解决方案第九讲:把数据库的内容在工作表中显示d05adcd6f82d78326444402e39b95fd8.jpeg

【分享成果,随喜正能量】凡是经不起时光沉淀的生命喧嚣,都不算伤痛,更不算创伤,它就是像浮云片片,来了去了,如果你心大点,它既不是来也不是去,它就是一片风景。。

第九讲 打开数据库记录集,把所得的数据回填到工作表

大家好,今日继续讲解VBA数据库解决方案的第9讲内容,打开一个数据库记录集,并把数据放到工作表文件中。

数据库的讲解开始进入到实际操作阶段,数据库的内容涉及到知识较多,还是之前强调的,这是VBA中级及以上水平的范畴,对于基础没有牢固的朋友,一定要下功夫把基础打牢,才可以逐渐过渡到数据库的学习。一定要对照我的第一套教程《VBA代码解决方案》,把各个知识点要弄通,然后再学习这套教程,可以收到事半功倍的效果。

代码讲解:

① Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.RecordSet")

上述代码中新创建了一个连接,一个记录集,大家要清楚的是,这是利用创建的方法产生的连接,

② strPath = ThisWorkbook.Path & "\mydata.accdb"

给出了数据库的路径

③ cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

这里是打开了cnADO这个连接

④ strSQL = "SELECT * FROM 职员表 WHERE 部门='总务'"

这是一个SQL语句,这个语句的作用就是,在数据库的“职员表”中查询部门为“总务”的人员

⑤ rsADO.Open strSQL, cnADO, 1, 3

这个命令是打开上述的符合SQL查询的记录集,其中strSQL 是代表"SELECT * FROM 职员表 WHERE 部门='总务'",cnADO是我们建立起来的ADO连接,后面的1和3的意义在上一讲我们刚刚见过;

1 代表;AdOpenForwardOnly (默认值)打开仅向前类型游标。

3 代表: AdLockOptimistic    开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。

⑥ Cells.ClearContents 为了存放数据,在工作表中先清理一下,清空数据

⑦ For i = 0 To rsADO.Fields.Count - 1

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

Next i

为了理解上述语句的意义,我们先来看看记录集的一些属性:

rsADO.Fields.Count 是记录结果集中的字段数,

Fields是字段集对象,由单个的Field字段组成,表示Recordset对象的列的集合。Fields成员的下标从0开始,0表示第一个字段。

上面代码的意思是将需要将字段名写入,也就是说在EXCEL中先写入表头。

⑧ Range("A2").CopyFromRecordset rsADO

为了理解上述代码的意义,先讲一下CopyFromRecordset方法。

CopyFromRecordset方法是将一个ADO或 DAO Recordset 对象的内容复制到工作表中,复制的起始位置以指定区域为左上角。

句法:Rng.CopyFromRecordset(Data, MaxRows, MaxColumns)

参数:

a) Data:Void 类型,必选。复制到指定区域的 Recordset 对象。

b) MaxRows:Variant 类型,可选。复制到工作表的记录个数上限。如果省略该参数,将复制 Recordset 对象的所有记录。

c) MaxColumns:Variant 类型,可选。复制到工作表的字段个数上限。如果省略该参数,将复制 Recordset 对象的所有字段。

那么,Range("A2").CopyFromRecordset rsADO的意义就是讲所得到的记录集合,复制到A2单元格为左上角的一个适应的区域内。

⑨ rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

这几条代码的意义就是记录集关闭,连接关闭,释放内存。

下面看我们运行后的结果:

7af7e884e7b75eed81d1498d53ec0846.jpeg

到此开篇提到的问题我们的问题就圆满解决了。

今日内容回向:

1 如何把数据库的内容在工作表中显示?

2 今天的代码采用了一种方式的处理,下一讲还有一种方案的处理,请结合两者的内容,看看今日的代码用的是那种处理方法?

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

dca01a1780afa55848567d2abe6f6dd2.jpeg

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

44ea19cb8d3b3d401f01ecc09cb6bde9.jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/796243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年阿里云4核8G服务器多少钱一年?4C8G服务器955元

阿里云服务器4核8G租用优惠价格955元一年,配置为云服务器ECS通用算力型u1实例4核8G配置、ESSD Entry盘20G-40G、1M-3M带宽,实例规格为ecs.u1-c1m2.xlarge,阿里云优惠活动 yunfuwuqiba.com/go/aliyun 活动链接打开如下图: 阿里云4核…

【数据结构】ArrayList详解

目录 前言 1. 线性表 2. 顺序表 3. ArrayList的介绍和使用 3.1 语法格式 3.2 添加元素 3.3 删除元素 3.4 截取部分arrayList 3.5 其他方法 4. ArrayList的遍历 5.ArrayList的扩容机制 6. ArrayList的优缺点 结语 前言 在集合框架中,ArrayList就是一个…

spring boot学习第十六篇:配置多数据源

1、代码参考: dynamic-ds/spring-boot-dynamic-ds at main veminhe/dynamic-ds GitHub 2、验证 2.1调用POST接口http://localhost:8081/hmblogs/blog/addBlog 2.2改动数据源为BJ 然后调用接口添加数据 然后查看ds0库的博客数据

【最新可用】Claude国内镜像,可上传图片,可用Claude3全系模型(包括Pro版本的Opus)!亲测比GPT好用!

亲测可用,镜像地址:Claude 3 镜像 使用方法 访问镜像:Claude 3 镜像 2. 点击设置,配置授权码,关闭设置。这里免费赠送一个体验版的授权码 sk-SZcJyvx3RXRID624E2D3795578Df44C7Af03F2909a8f5eA0 即可发起对话啦&…

Android Studio学习9——使用Logcat打印日志

在Android开发中,Logcat是一个工具,它允许开发者查看设备或模拟器的日志信息。开发者可以使用Log类来打印日志信息,这对于调试和错误排查非常有帮助。 v 或 verbose: 最低等级,显示所有消息。d 或 debug: 用于调试消息。i 或 info…

深入浅出 -- 系统架构之负载均衡Nginx动静分离

一、Nginx动静分离 动静分离应该是听的次数较多的性能优化方案,那先思考一个问题:为什么需要做动静分离呢?它带来的好处是什么? 其实这个问题也并不难回答,当你搞懂了网站的本质后,自然就理解了动静分离的重…

Docker安装mysql并且设置主从

Docker安装部署mysql 下载镜像 docker pull mysql:5.7.35查看镜像 docker images启动 直接启动不挂载文件 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7.35挂载文件 docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/m…

【Linux】环境基础开发工具使用——gcc/g++使用

Linux编译器-gcc/g使用 1. 背景知识 1. 预处理(进行宏替换 ) 2. 编译(生成汇编 ) 3. 汇编(生成机器可识别代码) 4. 连接(生成可执行文件或库文件 ) 2. gcc如何完成 格式 gcc [ 选项 ] 要编译的文件 [ 选…

代码随想录第19天

654. 最大二叉树 已解答 中等 相关标签 相关企业 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀…

Linux shell编程学习笔记45:uname命令-获取Linux系统信息

0 前言 linux 有多个发行版本,不同的版本都有自己的版本号。 如何知道自己使用的Linux的系统信息呢? 使用uname命令、hostnamectl命令,或者通过查看/proc/version文件来了解这些信息。 我们先看看uname命令。 1 uname 命令的功能和格式 …

官方竞价排名是否对SEO自然排名有影响?

很多站长有疑问,如果使用搜索引擎官方的SEM竞价,是否对之前做的SEO自然优化排名有影响。这个问题我自己也有疑问。 因为很多站长认为是起绝对反作用,什么只要用了竞价,停止之后,原本很好的排名都会掉光。我们不否定一…

Linux:部署搭建zabbix6(1)

1.基础介绍 Zabbix:企业级开源监控解决方案https://www.zabbix.com/cn这个是zabbix的官网,你可以进去看到由官方给你提供的专业介绍和获取到最新版本的功能介绍,还有各种安装,由于官方安装是多种复杂的,我这里就单独挑…

【stm32】软件I2C读写MPU6050

软件I2C读写MPU6050(文章最后附上源码) 编码 概况 首先建立通信层的.c和.h模块 在通信层里写好I2C底层的GPIO初始化 以及6个时序基本单元 起始、终值、发送一个字节、接收一个字节、发送应答、接收应答 写好I2C通信层之后,再建立MPU6050的.c和.h模块 基于I2C通…

Python基于深度学习的屋内烟雾检测系统的研究与实现,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

【原创】springboot+vue校园座位预约管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

RankLLM:RAG架构下通过重排序实现精准信息检索

一、前言 在检索增强生成(Retrieval-Augmented Generation, RAG)的框架下,重排序(Re-Rank)阶段扮演着至关重要的角色。该阶段的目标是对初步检索得到的大量文档进行再次筛选和排序,以确保生成阶段能够优先…

特征融合篇 | RTDETR引入基于内容引导的特征融合方法 | IEEE TIP 2024

本改进已集成到 RT-DETR-Magic 框架。 摘要—单幅图像去雾是一个具有挑战性的不适定问题,它从观察到的雾化图像中估计潜在的无雾图像。一些现有的基于深度学习的方法致力于通过增加卷积的深度或宽度来改善模型性能。卷积神经网络(CNN)结构的学习能力仍然未被充分探索。本文提…

一周年纪念

文章目录 机缘:命运之门收获---知识之心日常---灵魂之窗成就 — 自我之光憧憬 — 未来之路 机缘:命运之门 “人生是由一连串的选择组成,而真正的成长,往往始于最具挑战性的决定。” —— 这句话恰如其分地概括了我选择跨考计算机的…

【C++】map set 底层刨析

文章目录 1. 红黑树的迭代器2. 改造红黑树3. map 的模拟实现4. set 的模拟实现 在 C STL 库中,map 与 set 的底层为红黑树,那么在不写冗余代码的情况下使用红黑树同时实现 map 与 set 便是本文的重点。 1. 红黑树的迭代器 迭代器的好处是可以方便遍历&…

数据结构--树和二叉树

树和二叉树 1.树概念及结构树的概念树的相关概念树的表示 2.二叉树概念及结构概念特殊的二叉树二叉树的性质 3.二叉树顺序结构及实现4.二叉树链式结构及实现二叉树的顺序结构二叉树的前,中,后序遍历层序遍历 1.树概念及结构 树的概念 树是一种非线性的…