VBA数据库解决方案第十讲:Recordset记录集合的动态查询显示结果

news2024/12/25 23:45:42

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库解决方案第十讲:Recordset记录集合的动态查询,并显示结果b3b8913f1f568d4397fc708182b6b55d.jpeg

【分享成果,随喜正能量】一心热枕对待生活,静静的安抚自己内心的急迫和焦虑,你人生的好运,常常在你沉醉于生活时悄悄临门的。。

第十讲 Recordset记录集合的动态查询,并显示结果

大家好,今日继续讲解VBA数据库解决方案的第10讲内容,打开一个指定的数据库记录集,把所得的数据显示到工作表中。今日的内容是和第8讲,第9讲内容是相连续,在第9讲中讲了打开记录集的用的方法是“rsADO.Open strSQL, cnADO, 1, 3”在第8讲中我们讲了还有一种是“Execute(strSQL)”方法,今日我们就讲利用这种方法达到我们的目的,同时在SQL语句中的我们将查询设置为一个动态的查询。

1 应用场景的具体分析

如下面的工作表文件:我们要根据I2单元格的提示部门信息来查找数据表中的数据并将查询的结果放在左侧的区域:

aa17866041a5fc40fe1b1bfe46a44665.jpeg

2 Execute(strSQL)方法实现查询的代码及代码分析

我们看代码:

Sub mynz_10() '第10讲,打开一个指定的数据库记录集,把所得的数据显示到工作表中的方法

Dim cnADO As Object, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

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

Set cnADO = CreateObject("ADODB.Connection")

With cnADO

.Provider = "Microsoft.ACE.OLEDB.12.0"

.Open strPath

End With

strSQL = "SELECT * FROM 职员表 WHERE 部门='" & Cells(2, 9) & " '"

Set rsADO = cnADO.Execute(strSQL)

Sheets("10").Select

Columns("A:E").Select

Selection.ClearContents

Cells(2, 9).Select

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

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

Next i

Range("A2").CopyFromRecordset rsADO

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

edfef571f7620d5e15b958e356a34baf.jpeg

代码解读:

① Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim i As Integer

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

Set cnADO = CreateObject("ADODB.Connection")

上面的代码和第9讲的相同,分别声明了几个变量并建立了数据库的ADO连接,

② 在打开数据库时同时设置了连接:

With cnADO

.Provider = "Microsoft.ACE.OLEDB.12.0"

.Open strPath

End With

这种连接方式采用了我在第8讲中讲到另外的方式,可以参考一下。

③strSQL = "SELECT * FROM 职员表 WHERE 部门= '" & Cells(2, 9) & " '"

我们要重点的讲解一下这条语句,之前有朋友联络问过这类语句的书写方式,今日可以一并回答,这里要注意变量,变量是代码中的变量,在SQL语句中是不能出现变量的,要是常量并用引号括起来,所以在上面的语句中

a "SELECT * FROM 职员表 WHERE 部门= '" 为第一部分

b 最后的 " '"为第三部分

c Cells(2, 9)为第二部分。

三个部分中间用“&”连接起来。大家要务必记住这种书写的方式,这样在程序的运行中SQL语句才正确,下面看看在运行过程中的SQL语句:

abe8a40b4b8c6ed9fc6ebed2672b97dd.jpeg

④ Set rsADO = cnADO.Execute(strSQL) 对于这条语句,我在第8讲的内容中,也讲到是一种打开记录集的方式之一,是Connection对象的Execute方法,通过上面语句,我们就可以执行查询,并将结果保存到集合的对象中。

下面我将Connection对象的Execute方法再次专门的讲解一下:

ADODB.Connection对象的Execute方法:

该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:

  • 第一种:执行SQL查询语句时,将返回查询得到的记录集。用法为:

Set对象变量名=连接对象.Execute("SQL语句")

Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。

  • 第二种:执行SQL的操作性语言时,没有记录集的返回。此时用法为:

连接对象.Execute "SQL语句" [,RecordAffected][, Option]

参数 RecordAffected为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。

参数 Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效

在第9讲的讲解中,我们用了第二种方法,今日的代码用的是第一种代码。至于那种好,我这里没有说明,可以根据写代码人员的喜好即可。

代码的运行结果:

3d76798857e46f2438ea85b26e74d4d1.jpeg

05cf50dab362828458ba7b013adf86b3.jpeg

今日内容回向:

1 Connection对象的Execute方法有哪两种方法?

2 如何实现可控的指定查询?并将结果显示?

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

717f0ae29080b9b5f910fa977fe949a7.jpeg

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

c5830f715d26eb461a25076d6fccb9e1.jpeg


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

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

相关文章

爬虫学习:基本网络请求库的使用

目录 一、urllib网络库 1.urlopen()方法 2.request方法 二、requests网络请求库 1.主要方法 2.requests.get()和requests.post() 一、urllib网络库 1.urlopen()方法 语法格式: urlopen(url,data,timeout,cafile,capath,context) # url:地址 # data:要提交的数据…

编程题库-Python、Java、C++、C 应有尽有!!!

目录 网址注册账号题库 网址 传送门 http://oj.ecustacm.cn/ 这个↑链接是网站 注册账号 刚进去是这个页面 注册一个账号 题库 点击上方的问题菜单,进入题库 点击题目标题进入题目,我就随便点一道 这里面一般会有样例输入和输出以及题目描述 点…

网络安全 SQLmap-tamper的使用

目录 使用SQLmap Tamper脚本 1. 选择合适的Tamper脚本 2. 在命令行中使用Tamper脚本 3. 组合使用Tamper脚本 4. 注意和考虑 黑客零基础入门学习路线&规划 网络安全学习路线&学习资源 SQLmap是一款强大的自动化SQL注入和数据库取证工具。它用于检测和利用SQL注入漏…

# 从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(3)

从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(3) 一、hystrix:通过 Actuator 获取 hystrix 的监控数据 1、Hystrix 的监控平台介绍: 1)Hystrix 除了实现容错功能,Hystrix 还…

【JAVA基础之多线程】多线程案例以及自定义线程池

🔥作者主页:小林同学的学习笔录 🔥mysql专栏:小林同学的专栏 目录 1.多线程 1.1 概述 1.2 并发和并行 1.3 进程和线程 1.4 多线程的实现 1.4.1 继承Thread类 1.4.2 实现Runnable接口 1.4.3 实现Callable接口 1.4.4 总结 …

Flask 3 保姆级教程(一):快速上手

一、创建项目 PyCharm 中新建项目 创建完成后会出现这么个项目 以下是代码解析: # 导入了 Flask 类 from flask import Flask# 创建了一个 Flask web 应用的实例,并将其赋值给变量 app # __name__ 是一个特殊的 Python 变量,它表示当前模块…

Educational Codeforces Round 165 (Rated for Div. 2 ABCDE 题)视频讲解

A. Two Friends Problem Statement Monocarp wants to throw a party. He has n n n friends, and he wants to have at least 2 2 2 of them at his party. The i i i-th friend’s best friend is p i p_i pi​. All p i p_i pi​ are distinct, and for every i ∈…

一文全面了解 wxWidgets 布局器(Sizers)

目录 Sizers背后的理念 共同特征 最小大小 边框 对齐方式 伸缩因子 使用 Sizer 隐藏控件 wxBoxSizer wxStaticBoxSizer wxGridSizer wxFlexGridSizer 布局器(Sizers),由wxWidgets类层次结构中的wxSizer类及其派生类表示&#xff0…

社会信用示范城市信用代码和虚拟变量(1990-2022年)

01、数据介绍 数据名称:社会信用示范城市信用代码和虚拟变量 数据年份:1990-2022年 计算说明: 数据来源: 时间跨度:1990-2023 年 区域范围:上市公司所属城市范围 参考文献: [1]曹雨阳,孔东…

树莓派控制步进电机(下):软件编程

目录 说明 软件编程 树莓派的RPI编程 基本测试程序 参考文献 说明 在上一篇博文中我们介绍了树莓派控制步进电机所需要的硬件连接,本篇博文主要介绍软件编程。这里我们使用的是树莓派4B开发板,步进电机为6线两相步进电机,驱动器采用的是…

【强训笔记】day6

NO.1 思路:因为存的字符串高位存放的是低下标,所以输出的字符串必须先翻转。 代码实现: class Solution { public:string solve(string s, string t) {string ret;int is.size()-1,jt.size()-1;int tmp0;while(i>0||j>0||tmp){if(i&…

【C++】学习笔记——模板

文章目录 三、内存管理4. operator new与operator delete函数5. new 和 delete 的实现原理1. 内置类型2. 自定义类型3. malloc/free和new/delete的区别 四、模板初阶1. 泛型编程模板实例化 未完待续 三、内存管理 4. operator new与operator delete函数 我们之前学到&#xf…

富唯智能案例|双3D相机引导衔架抓取铝型材

随着制造业的快速发展和自动化水平的不断提升,铝型材的自动化抓取和加工成为行业内的一大技术难题。铝型材因其轻便、耐腐蚀、易加工等特点,广泛应用于建筑、汽车、电子等领域。然而,铝型材的形状多样、尺寸不一,以及生产线上的高…

Spring Cloud——LoadBalancer

Spring Cloud——LoadBalancer 一、负载均衡(LoadBalance)1.LoadBalancer本地负载均衡客户端 VS Nginx服务端负载均衡区别 二、LoadBalancer1.Spring RestTemplate as a LoadBalancer Client2.编码使用DiscoveryClient动态获取所有上线的服务列表3.从默认…

详细分析Java中的脱敏注解(附Demo)

目录 前言1. 基本知识2. 核心逻辑3. Demo4. 模版 前言 对于隐私信息,需要做特殊处理,比如身份证或者手机号等 对于Java的相关知识推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 1. 基本知…

【4/26-4/30】 Arxiv安全类文章速览

4/26 标题: Merchants of Vulnerabilities: How Bug Bounty Programs Benefit Software Vendors 作者: Esther Gal-Or, Muhammad Zia Hydari, Rahul Telang摘要: 软件漏洞允许恶意黑客利用,威胁系统和数据安全。本文研究了激励道德黑客发现并负责任地向软件供应商披…

[PS小技能学习]抠图和切图

详情见视频教程:PS小技巧--抠图与切图 今天我们来学习如何使用PS对表情包合辑进行抠图和裁剪保存 1、首先,将图片导入,双击图层新建一个图层 2、然后点击工具栏的魔棒工具,再点击顶部菜单栏的添加到选区 3、点击图片的空白区域即…

spring boot学习第十八篇:使用clickhouse

1、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://…

目标检测算法YOLOv3简介

YOLOv3由Joseph Redmon等人于2018年提出&#xff0c;论文名为&#xff1a;《YOLOv3: An Incremental Improvement》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/1804.02767.pdf &#xff0c;项目网页&#xff1a;https://pjreddie.com/darknet/yolo/ 。YOLOv3是对YOL…

我独自升级崛起怎么注册?新手一看就会的注册方法

《我独自升级&#xff1a;ARISE》是网石旗下一款以网漫《我独自升级》IP开发的ARPG&#xff0c;游戏中&#xff0c;玩家会成为漫画主角程肖宇进行战斗&#xff0c;并通过升级使用更多技能和武器&#xff0c;打造出属于自己的战斗风格。同时&#xff0c;游戏中还将体现原作的核心…