VBA数据库解决方案第十五讲:Recordset集合中单个数据的精确处理

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库解决方案第十五讲:Recordset集合中的单个数据的精确处理665d63e5b42f9e3f8b782019881810ed.jpeg

【分享成果,随喜正能量】 你有你的立场,我有我的底气。各自修行,各自好;各自因果,各自了。成年人最大的清醒,就是管好自己,不渡他人,。

第十五讲 Recordset集合中的单个数据的精确处理

大家好,今天给继续讲解VBA数据库解决方案的第15讲:Recordset集合的单个数据精确处理,在前几讲中,我们讲了Table对象的添加和删除。今天我们要讲的内容是Recordset集合的处理方案,这个处理和Table的处理是关系紧密的,在第10讲中我们讲了利用下面的语句实现Recordset集合内容的可视化导出:Range("A2").CopyFromRecordset rsADO,那么是否还有其他的办法能精确的控制导出的内容呢?

比如我只需要其中几个字段的记录,该如何处理呢?这时我们需要对Recordset集合的详细的数据处理了,也就是说要通过循环语句把每一个数据都要遍历到。

1 记录集的MoveFirs,MoveLast,MoveNext,MovePrevious方法

  • MoveFirst方法

作用是:将记录指针移动到记录集中的第一条记录。它以第一条记录作为当前记录。

  • 当记录集为空时,请求MoveFirst或MoveLast将产生一个错误。
  • MoveLast方法

作用是:将记录指针移动到记录集中的最后一条记录。它以最后一条记录作为当前记录。

  • 当记录集为空时,请求MoveFirst或MoveLast将产生一个错误。
  • 如果记录集对象不支持书签或不能向后移动指针,那么将产生错误。
  • MoveNext方法

作用是:将记录指针移动到记录集中的下一条记录。它以下一条记录作为当前记录。

  • 当当前记录指针位于最后一条记录时,如果你请求这个方法,将产生错误。
  • MovePrevious 方法

作用是:将记录指针移动到记录集中的上一条记录。它以上一条记录作为当前记录。

  • 如果记录集对象不支持书签或不能向后移动指针,那么将产生错误。.
  • 当当前记录为记录集中第一条记录时,如果你请求该方法,那么它将产生一个错误。

由此我们还要判断记录集是否为首位还要判断,这时是通过般需要通过Recordset对象的EOF属性先进行判断游标是否到了记录尾。当游标到了记录尾时,EOF属性会被设置为True。

同理可以通过Recordset对象的BOF属性先进行判断游标是否到了记录首。当游标到了记录首时,BOF属性会被设置为True。

2 精准控制记录集的导出

如下面的数据库的数据,我们要导出部门为“一厂”的职工目录,该如何做到呢?5f739552830075d932c2d2271c80a909.jpeg

代码如下:

Sub mynz_15() '第15讲:Recordset集合的单个数据精确处理

Dim cnADO As Object, rsADO As Object

Dim strPath As String, strSQL As String

Dim i As Integer

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.RecordSet")

strPath = ThisWorkbook.Path & "\mydata2.accdb"

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

strSQL = "SELECT * FROM 员工信息 WHERE 部门='一厂'"

rsADO.Open strSQL, cnADO, 1, 3

Sheets("15").Select

Cells.ClearContents

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

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

Next i

For i = 1 To rsADO.RecordCount

For j = 0 To rsADO.Fields.Count - 1

Sheets("15").Cells(i + 1, j + 1) = rsADO.Fields(j)

Next j

rsADO.MoveNext

Next i

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

MsgBox "ok!"

End Sub

代码截图:

e30df04b4703b66cb99b059966bdab69.jpeg

代码解析:

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

Set rsADO = CreateObject("ADODB.RecordSet")

strPath = ThisWorkbook.Path & "\mydata2.accdb"

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

上述代码先建立ADO 和RS 对象并打开

2)strSQL = "SELECT * FROM 员工信息 WHERE 部门='一厂'"

rsADO.Open strSQL, cnADO, 1, 3

上述语句,建立一个SQL语句并打开

3)For i = 0 To rsADO.Fields.Count - 1

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

Next i

表头计入

4) For i = 1 To rsADO.RecordCount

For j = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(i + 1, j + 1) = rsADO.Fields(j)

Next j

rsADO.MoveNext

Next i

数据内容计入,这个是今日内容的重点,这种方法的操作数据是一个一个计入的。对于记录集的指针转到下一个记录一定要用rsADO.MoveNext 移动记录。

5)rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

关闭连接,释放内存。

看下面的输出结果:

b6e457f70f0ea53305344cb4a4dfdc7f.jpeg

通过记录集的精准控制,可以完成具体到每个数据的判断,应用是非常灵活的,

今日内容回向:

1 MoveFirs,MoveLast,MoveNext,MovePrevious 方法的意义是否理解呢?

2 如何实现记录的精确控制?

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

4e488de4620fa6c49e9aec375b051411.jpeg

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

0d1a0bd09c28176818aa692dc5fbe030.jpeg

2e938765eeacb3dee512b3ba6cdef594.jpeg



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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机、ubantu不能连接网络,解决办法

虚拟机、ubantu不能连接网络,解决办法 物理机OS: [Windows10 专业版](https://so.csdn.net/so/search?qWindows10 专业版&spm1001.2101.3001.7020) 虚拟机平台: VMware Workstation 16 Pro 虚拟机OS: Ubuntu 18.04 自动配…

适合初学者的[JAVA]: 基础面试题

目录 说明 前言 String/StringBuffer/StringBuilder区别 第一点: 第二点: 总结: 反射机制 JVM内存结构 运行时数据区域被划分为5个主要组件: 方法区(Method Area) 堆区(Heap Area) 栈区&#x…

SSM整合:图书管理系统

图书管理系统 一.环境 1.数据库环境 CREATE DATABASE ssmbuild;USE ssmbuild;DROP TABLE IF EXISTS books;CREATE TABLE books (bookID INT(10) NOT NULL AUTO_INCREMENT COMMENT 书id,bookName VARCHAR(100) NOT NULL COMMENT 书名,bookCounts INT(11) NOT NULL COMMENT 数量…

宁夏众智科技OA办公系统存在SQL注入漏洞

漏洞描述 宁夏众智科技OA办公系统存在SQL注入漏洞 漏洞复现 POC POST /Account/Login?ACTIndex&CLRHome HTTP/1.1 Host: Content-Length: 45 Cache-Control: max-age0 Origin: http://39.105.48.206 Content-Type: application/x-www-form-urlencoded Upgrade-Insecur…

《论文阅读》PECER:通过动态人格提取和情境情绪推理产生同理心反应 ICASSP 2024

《论文阅读》PECER:通过动态人格提取和情境情绪推理产生同理心反应 ICASSP 2024 前言简介任务定义模型架构Cognitive-Affective Personality PerceiverMulti-source EncoderInteractive Decoder损失函数实验结果可持续发展观点前言 亲身阅读感受分享,细节画图解释,再也不用…

C++中,如何使你设计的迭代器被标准算法库所支持。

iterator(读写迭代器) const_iterator(只读迭代器) reverse_iterator(反向读写迭代器) const_reverse_iterator(反向只读迭代器) 以经常介绍的_DList类为例,它的迭代…

ControlGAN:Controllable Text-to-Image Generation

1 研究目的 当前的生成网络通常是不可控的,这意味着如果用户更改句子的某些单词,合成图像将与原始文本生成的合成图像显着不同;当给定的文本描述(例如颜色)发生变化时,鸟类的相应视觉属性被修改&#xff0c…

大数据实时数仓Hologres(四):基于Flink+Hologres搭建实时数仓

文章目录 基于FlinkHologres搭建实时数仓 一、使用示例 二、方案架构 1、架构优势 2、Hologres核心优势 三、实践场景 四、项目准备 1、创建阿里云账号AccessKey 2、准备MySQL数据源 五、构建实时数仓​编辑 1、管理元数据 2、构建ODS层 2.1、创建CDAS同步作业OD…

fpga系列 硬件(时序收敛):触发器建立时间(setuptime)

触发器 电平触发、边沿触发和脉冲触发是三种主要的触发形式。always (posedge clk or negedge rst_n) 是一个典型的 Verilog 语句,用于定义一个带复位的触发器。D触发器是一种基本的数字存储元件,主要用于数据存储和时序控制。 D触发器的建立时间和保持…

华为-IPv6与IPv4网络互通的6to4自动隧道配置实验

IPv4向IPv6的过渡不是一次性的,而是逐步地分层次地。在过渡时期,为了保证IPv4和IPv6能够共存、互通,人们发明了一些IPv4/IPv6的互通技术。 本实验以6to4技术为例,阐述如何配置IPv6过渡技术。 配置参考 R1 # sysname R1 # ipv6# interface GigabitEthernet0/0/1ip address 200…

躺平成长:微信小程序运营日记第二天

在进行属于生活的开源之后,自己更加感受到自己存在的渺茫,同时更加开始深刻领会,开源的重要性,在开源,开放,创造,再创新的思维模式下,不发布八部金刚功相关的训练视频,自…

Typora---进度条(1)

本系列专门介绍关于typora中用到的小玩意。(哈哈哈哈哈哈) 本帖子讲述关于 进度条 的事情。 在typora中通过下面的语句可以显示出一个进度条: ![95% done](https://markdone.org/progress//95.png)通过更改上面语句中的数字可以展示不同的进…

中英翻译神器!轻松搞定跨文化沟通

大家好!今天咱们来聊聊那些你生活中不可或缺的翻译小助手;不论你是个英语小白,还是希望更快地了解外国文献、掌握外媒信息,或者是从事需要大量翻译工作的小伙伴,总有一款翻译工具能帮你省时省力,让你的生活…

Total_Expectation_Conditional_Bias_Variance_Tradeoff

Statistics with Prof. Liang Liu Topics: Total expectation, consitional expectation, conditional probability, marginal probability, 模型的 Bias, Variance 我们碰到的绝大多数都是 conditional 的probability 。比如,given miu, sigma square, 才能讨论…

【Java基础】Java面试基础知识QA(上)

Java面试基础知识Q&A(上) 面向对象编程( OOP) Java 是一个支持并发、基于类和面向对象的计算机编程语言。面向对象软件开发的优点: 代码开发模块化,更易维护和修改。代码复用。增强代码的可靠性和灵活性…

【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯打造个人IP爆款文案提示词使用方法 💯CSDN爆款技术文案提示词使用方法 💯高效教案设计提示词使用方法 💯小结 💯前言 在这…

【无人机设计与技术】自抗扰控制(ADRC)的建模与仿真研究

摘要 本文针对四旋翼无人机姿态控制系统进行了基于自抗扰控制(ADRC)的建模与仿真研究。通过MATLAB/Simulink仿真平台,实现了无人机的姿态控制模型,并采用自抗扰控制器(ADRC)对无人机的姿态进行控制。本文详细介绍了自抗扰控制器的设计方法和应用&#x…

力扣题解 983

大家好,欢迎来到无限大的判断,祝大家国庆假期愉快 题目描述(中等) 最低票价 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出…

餐饮重点企业在AI领域的布局,看方大的AI实践

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI已经被应用在餐饮餐厨行业的哪些方面&am…

叶绿素透射反射率与波长

本文在分析巢湖水体反射光谱特征的基础上,通过对光谱反射率与叶绿素a 的浓度之间的关系进行分析研究,结果表明,单波段光谱反射率与叶绿素a浓度的相关系数较小,不宜用于估算叶绿素a浓度.光谱反射率比值RFo5.m/Rss.nm.和 690nm反射率的一阶微分均与叶绿素a浓度有较好的…