VBA数据库解决方案第十二讲:如何判断数据库中数据表是否存在

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库解决方案第十二讲:如何判断数据库中某个数据表是否存在dcba2f4f825a8c676f50a0a6c4b14c09.jpeg

【分享成果,随喜正能量】 心静者高,高者俯瞰世界 心和者仁,仁者包容万物 心慈者深,深者淡对冷暖 心慧者安,安者笑对人生 。

第十二讲 如何判断数据库中某个数据表是否存在

大家好,今天给继续讲解VBA数据库解决方案,今天讲第12讲:如何判断数据库中的表是否存在。

1 应用场景的具体分析

为什么要讲这讲的内容呢?如我在上一讲讲的内容中有这段代码:
Set catADO = CreateObject("ADOX.Catalog")

strPath = ThisWorkbook.Path & "\mydata2.accdb" '此处是一个完整的路径

strTable = "员工记录" '表名称

If Dir(strPath) <> "" Then Kill strPath '如果有一个名称相同的表,那么删除

catADO.Create "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath '创建数据库并连接。

当我要创建一个数据库的时候,要首先判断一下这个数据库是否是存在,如果没有存在才能创建,如果已经存在,那么先要删除这个数据库才能创建,不然会出错的。对于关系表也是如此,如果我们要新建一个表,那么判断这个表是否存在是必须的。如何做到呢?

2 判断数据表是否存在的代码及代码解读

我们看下面的代码:

Sub myna_12() '判断数据表是否存在

Dim cnADO As Object

Dim strPath As String

Set cnADO = CreateObject("ADODB.Connection")

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

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

If cnADO.OpenSchema(20, Array(Empty, Empty, "员工记录", Empty)).EOF Then

MsgBox "[员工记录] 表" & "不存在"

Else

MsgBox "[员工记录] 表" & "已存在"

End If

End Sub

代码截图:

f652beb4d41ac27ad5f1261c7c9157ff.jpeg

代码解读:

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

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

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

上面的语句是建立ADO对象,及打开连接,就不再过多的讲解了

2) If cnADO.OpenSchema(20, Array(Empty, Empty, "员工记录", Empty)).EOF Then

上面的语句中用到了cnADO.OpenSchema()方法:

OpenSchema方法是从提供者获取数据库模式信息,返回包含模式信息的 Recordset 对象。

语法:

OpenSchema (QueryType, Criteria, SchemaID)

参数:

  • QueryType 所要运行的模式查询类型,可以选择的常量,由于值较多,我们只是给出文中所用到的值 adSchemaTables = 20 表示请求有关表的信息
  • Criteria 可选。每个QueryType 选项的查询限制条件数组,比如 QueryType是adSchemaTables,Criteria可用的就是TABLE_CATALOG(表的目录),TABLE_SCHEMA(表的模型),TABLE_NAME(表的名字),TABLE_TYPE(表的类型),由于在我们的代码中我们要求的是表明是“员工记录”,所以我们给出的数组是:Array(Empty, Empty, "员工记录", Empty))  
  • 第三个参数SchemaID极少用到。如果 QueryType 设置为 adSchemaProviderSpecific = -1请求提供者特定的信息,则需要该参数,否则不使用它.

EOF它是end of file(End of File就是文件的结束,也即EOF,通常用来判断文件的操作是否结束的标志 )的缩写,表示"文字流"(stream)的结尾。

这样,代码If cnADO.OpenSchema(20, Array(Empty, Empty, "员工记录", Empty)).EOF then 代表的意思:如果到了文件的操作结束,意思是说也没有找到表名称为“员工记录”的表,那么就是没有找到。

2aaad95fa4bfc51872e8d6e544668e98.jpeg

好了,我们运行一下上面的代码:

c1eac2c43fff39c68188c48da1c07f7a.jpeg

今日内容回向:

1. 如何判断一个数据表是否存在?

2 对OpenSchema的语法,是否了解呢?

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

48ff737bd06a0f84d8119a039d513a6c.jpeg

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

a73e169fbfe9f2297ab0894e79b7906a.jpeg


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

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

相关文章

第11章 规划过程组(11.6规划进度管理)

第11章 规划过程组&#xff08;二&#xff09;11.6规划进度管理&#xff0c;在第三版教材第385页&#xff1b;#软考中级##中级系统集成项目管理师# 文字图片音频方式 第一个知识点&#xff1a;主要输出 1、进度管理计划 准确度 定义活动持续时间估算的可接受区间&#xff0…

第二周:计算机网络概述(下)

一、计算机网络性能指标&#xff08;速率、带宽、延迟&#xff09; 1、速率 2、带宽 3、延迟/时延 前面讲分组交换的时候介绍了&#xff0c;有一种延迟叫“传输延迟”&#xff0c;即发送一个报文&#xff0c;从第一个分组的发送&#xff0c;到最后一个分组的发送完成的这段时…

医疗AI革命,为何多模态大模型难以突破?

在人工智能的浪潮中&#xff0c;多模态大模型以其强大的数据处理能力和深度学习算法&#xff0c;被寄予厚望于医疗影像分析、辅助诊断等领域。然而&#xff0c;现实情况却远非如此乐观。本文将带您深入了解多模态大模型在医疗辅助诊断领域的潜力与局限&#xff0c;揭示其面临的…

ue5导航网格设置

AI使用导航网格进行移动&#xff0c;所以&#xff0c;先设置导航网格边界体积 2&#xff0c;使导航网格边界体积覆盖AI所需要的场景&#xff08;绿色区域&#xff09;&#xff0c;x,y&#xff0c;z在这里都扩大到原来的10倍 3&#xff0c;打开actor的“启用tick并开始” 4&…

MathType8.0最新官方免费版 功能强大的数学公式编辑器

MathType 是款功能强大的数学公式编辑器&#xff0c;可以让用户轻松地在各种文档中插入复杂的数学公式和符号。它支持手写输入公式&#xff0c;方便用户直接通过鼠标或触摸屏操作来创建公式。MathType 的符号丰富&#xff0c;几乎涵盖了所有数学、物理和化学等领域所需的符号。…

128陷阱详解

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

windows下启动redisSentinel

如果已经安装redis的就继续往下看&#xff0c;还没安装redis&#xff0c;先安装一下redis 安装完redis之后&#xff0c;打开redis的目录。 新建一个sentinel.conf文件 # 端口号 port 26379# Sentinel 监控的主节点信息&#xff0c;格式为 <master-name> <ip> &l…

球形气膜:现代娱乐场馆的最佳选择—轻空间

随着科技的发展和人们对高品质生活的追求&#xff0c;娱乐场馆的建设迎来了新的变革。球形气膜结构凭借其独特的优势&#xff0c;逐渐成为现代娱乐场馆建设的最佳选择。轻空间将介绍球形气膜的优势&#xff0c;并探讨其在不同应用场景中的广泛应用。 球形气膜的优势 1. 独特的建…

【Python实战因果推断】13_线性回归的不合理效果3

目录 Regression Theory Single Variable Linear Regression Multivariate Linear Regression Frisch-Waugh-Lovell Theorem and Orthogonalization Regression Theory 我不打算太深入地探讨线性回归是如何构建和估计的。不过&#xff0c;一点点理论知识将有助于解释线性回归…

【HarmonyOS NEXT】鸿蒙如何动态添加组件(NodeController)

NodeController用于实现自定义节点的创建、显示、更新等操作的管理&#xff0c;并负责将自定义节点挂载到NodeContainer上。 说明 本模块首批接口从API version 11开始支持 当前不支持在预览器中使用NodeController。 导入模块 import { NodeController } from "ohos…

尚硅谷k8s 2

p54-56 k8s核心实战 service服务发现 Service:将一组 Pods 公开为网络服务的抽象方法。 #暴露Deploy,暴露deploy会出现在svc kubectl expose deployment my-dep --port8000 --target-port80#使用标签检索Pod kubectl get pod -l appmy-depapiVersion: v1 kind: Service metad…

无锁编程——从CPU缓存一致性讲到内存模型(1)

一.前言 1.什么是有锁编程&#xff0c;什么是无锁编程&#xff1f; 在编程中&#xff0c;特别是在并发编程的上下文中&#xff0c;“无锁”和“有锁”是描述线程同步和资源访问控制的两种不同策略。有锁&#xff08;Locked&#xff09;: 有锁编程是指使用锁&#xff08;例如互…

Python系统教程01

Python 是一门解释性语言&#xff0c;相对更简单、易学&#xff0c;它可以用于解决数学问题、获取与分 析数据、爬虫爬取网络数据、实现复制数学算法等等。 1、print()函数&#xff1a; print()书写时注意所有的符号都是英文符号。print()输出内容时&#xff0c;若要输出字符…

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…

回溯 | Java | LeetCode 39, 40, 131 做题总结(未完)

Java Arrays.sort(数组) //排序 不讲究顺序的解答&#xff0c;都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意&#xff0c;sum - candidates[i];很重要&#xff0c;也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

力扣热100 哈希

哈希 1. 两数之和49.字母异位词分组128.最长连续序列 1. 两数之和 题目&#xff1a;给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。…

34. 在排序数组中查找元素的第一个和最后一个位置(中等)

34. 在排序数组中查找元素的第一个和最后一个位置 1. 题目描述2.详细题解&#xff08;1&#xff09;朴素二分查找算法&#xff08;2&#xff09;改进二分查找算法 3.代码实现3.1 Python  方法一:  方法二:  方法三&#xff1a;优化方法二 3.2 Java 1. 题目描述 题目中转…

Elasticsearch:Painless scripting 语言(二)

这是继上一篇文章 “Elasticsearch&#xff1a;Painless scripting 语言&#xff08;一&#xff09;” 的续篇。 使用 field API 访问文档中的字段 警告&#xff1a;Field API 仍在开发中&#xff0c;应视为测试版功能。API 可能会发生变化&#xff0c;此迭代可能不是最终状态。…

Ubuntu20.04 安装 cudatookit 12.2 + cudnn 安装

最简约的部署Ubuntu20.04深度学习环境的教程 1. 安装Ubuntu20.04 系统 B站详细的安装教程 简约安装版 2. 安装Nvidia显卡驱动 我参考了各种资料&#xff0c;重装系统&#xff0c;完美解决开机显示器黑屏无法进入桌面的情况 黑屏问题主要是由linux内核更新导致&#xff0c;…

煤矿ar远程协作平台系统提升了操作的安全性和效率

工业AR远程专家协助系统为企业量身打造大型设施的虚拟布局方案。借助先进的AR增强现实技术&#xff0c;企业能够在虚拟环境中精准模拟并购买适配设备&#xff0c;确保设施的顺畅运行。同时&#xff0c;工业AR远程专家协助系统能提供的协作功能让团队成员能够实时共享虚拟布局&a…