VBA数据库解决方案第十四讲:如何在数据库中动态删除和建立数据表

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

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA数据库解决方案第十四讲:如何在数据库中动态删除和建立数据表cbc123125769252bfb7339c136d588dc.jpeg

【分享成果,随喜正能量】 你过去的业障,现在它生起了,你想修道,它给你做障碍,所以你心里不安。那你怎么办?你认识它了,安一安吧!

当你心不安的时候,不要打坐,也不要参禅。做什么?读诵大乘,最好的方法就是读诵大乘。。

第十四讲 如何在数据库中动态删除和建立数据表

大家好,今天继续讲解VBA数据库解决方案的第14讲:如何动态的在数据库中建立数据表。我们在什么是数据库中讲解讲过,表是一种关系,那么这种关系可否能实现动态的建立呢?也就是说,我们在程序中用代码建立数据表,是否可以做到呢?我们经常会建立数据表,手工建立确实很麻烦,用VBA代码去建立是否可行呢?用代码去建立是完全可以的,也非常的简单。

实例的应用:在一个数据库mydata中已经存在了一个表“员工记录”,我们要建立另外的一个表“信息参考”,这个表中的内容是为了储存包括各个部门的部门名称,和部门的定岗人数两个字段,我们要看看这个代码该如何完成的。

1 动态建立和删除数据表的应用代码

代码如下:

Sub mynz_14() '第14讲:如何动态的在数据库中建立数据表

Dim cnADO As Object, rsADO As Object

Dim strPath As String, myTable As String, strSQL As String

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

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

myTable = "信息参考"

tt = False

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

Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, myTable, Empty))

If Not rsADO.EOF Then

MsgBox "工作表已经存在,将删除数据表", vbInformation, "数据表判断"

strSQL = "DROP TABLE " & myTable

cnADO.Execute strSQL

tt = True

Else

MsgBox "数据表不存在,下面将建立工作表", vbInformation, "数据表判断"

End If

strSQL = "CREATE TABLE " & myTable _

& "(部门 text(20) not null,总人数 text(10) not null)"

cnADO.Execute strSQL

If tt <> True Then

MsgBox "创建数据表成功!" & vbCrLf & "数据表名称为:" & myTable, , "创建数据表"

Else

MsgBox "创建数据表重新创建成功!" & vbCrLf & "数据表名称为:" & myTable, , "创建数据表"

End If

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码的截图:

99c543b141e1cf04b6431e19d6a5a94d.jpeg

2 代码的解读和实现效果

代码的讲解:

1) strSQL = "DROP TABLE " & myTable

cnADO.Execute strSQL

这是通过SQL,使用 DROP 语句,删除表。

  • 备注:通过使用 DROP 语句,可以轻松地删除索引、表和数据库。

2)Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, myTable, Empty))

If Not rsADO.EOF Then

MsgBox "工作表已经存在,将删除数据表", vbInformation, "数据表判断"

strSQL = "DROP TABLE " & myTable

cnADO.Execute strSQL

TT = True

Else

MsgBox "数据表不存在,下面将建立工作表", vbInformation, "数据表判断"

End If

在上述的代码中首先要判断myTable工作表即"信息参考"的表是否存在,如果存在那么首先要删除这个已经存在的数据表,为了达到人机交互,在删除之前提示用户。如果不存在数据表,那么会提示用户,下面将创建。

3) strSQL = "CREATE TABLE " & myTable _

& "(部门 text(20) not null,总人数 text(10) not null)"

cnADO.Execute strSQL

上述代码创建了一个myTable工作表即"信息参考"的数据表,这个工作表有两个字段,

① 部门 text(20) not null 名称为“部门”, 文本 20个字符长,不为空

② 总人数 text(10) not null名 称为“总人数”,文本 10个字符长,不为空

③ CREATE TABLE 语句用于创建数据库中的表。

语法:CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

....

4) If TT <> True Then

MsgBox "创建数据表成功!" & vbCrLf & "数据表名称为:" & myTable, , "创建数据表"

Else

MsgBox "创建数据表重新创建成功!" & vbCrLf & "数据表名称为:" & myTable, , "创建数据表"

End If

上面代码中弹出对话框提示用户数据表创建成功,这里提示用户创建的过程是不同的,一种情况是原来没有此数据表是新创建的,一种情况是原先存在此工作表,被删除了,然后再创建的。这个判断是通过的一个变量TT来确认的。

5) rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

上述代码是关闭连接,并释放内存。在代码的编写过程中。一定记着最后要关闭连接和记录集,最后还要释放内存。

下面我们看看代码的运行:

3f304c1a9d642ff56372063902c0f3a8.jpeg

47ce1bc42423c32b6cbffc451c9f2c22.jpeg

如果是原先存在此数据表,则会有下面的提示:

f92a9c72e299dabd5634d04025d66091.jpeg

c44791a4d66cc1ec6e4f0321c1aacffc.jpeg

今日内容回向:

1 如何创建和删除一个数据库中的数据表?

2 创建一个数据表的字段是如何添加的?

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

65efecd3e26908a8b20c5ac19fc04fce.jpeg

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

8b2486d4f1ad25f76e96be18d5574623.jpeg


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

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

相关文章

Pixelmator Pro for Mac 专业图像处理软件【媲美PS的修图软件】

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件…

MySQL 使用C语言链接

mysql的基础&#xff0c;我们之前已经学过&#xff0c;后面我们只关心使用 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;大家可以去官网下载 我们使用C接口库来进行连接 要正确使用&#xff0c;我们需要做一些准备工作&#xff1a; 保证mysql服务有…

python常用库学习-Matplotlib使用

文章目录 安装 Matplotlib导入库基本示例1. 绘制简单的线图2. 散点图3. 柱状图4. 直方图5. 子图 更多高级功能1. 自定义样式2. 文本和注释3. 保存图形 示例&#xff1a;使用 Matplotlib 绘制多个图表示例 1: 绘制多个线图示例 2: 绘制散点图和直方图 参考文献 Matplotlib 是 Py…

MySQL数据库安装(详细)—>Mariadb的安装(day21)

该网盘链接有效期为7天&#xff0c;有需要评论区扣我&#xff1a; 通过网盘分享的文件&#xff1a;mariadb-10.3.7-winx64.msi 链接: https://pan.baidu.com/s/1-r_w3NuP8amhIEedmTkWsQ?pwd2ua7 提取码: 2ua7 1 双击打开安装软件 本次安装的是mariaDB&#xff0c;双击打开mar…

移动UI:成就勋章页面该如何设计,用例子说明。

移动应用的UI成就勋章页面通常是一个展示用户在应用中取得成就和获得勋章的页面。这种页面通常用于激励用户参与应用的活动&#xff0c;增加用户的参与度和忠诚度。 UI设计成就勋章页面时&#xff0c;一般会包括以下元素和功能&#xff1a; 1. 勋章列表&#xff1a; 展示用户…

集成电路学习:什么是ARM先进精简指令集计算机

ARM&#xff1a;先进精简指令集计算机 ARM先进精简指令集计算机&#xff08;Advanced RISC Machine&#xff0c;简称ARM&#xff09;是一种基于精简指令集计算机&#xff08;RISC&#xff09;原则的计算机处理器架构&#xff0c;由英国的ARM公司开发。这种架构以其低功耗和高性…

git创建本地分支并track跟踪远程分支

git创建本地分支并track跟踪远程分支 查看本地分支与远程分支的映射关系&#xff1a; git branch -vv 查看远程都有什么分支&#xff1a; git branch -r 在本地自动新建一个xxx分支&#xff0c;且自动track跟踪远程的同名xxx分支&#xff1a; git checkout --track origin/xx…

《黑神话:悟空》背后的渲染技术解析

《黑神话&#xff1a;悟空》作为备受瞩目的国产单机游戏&#xff0c;承载了深厚的文化底蕴&#xff0c;其背后的渲染技术无疑是推动其视觉表现达到新高度的关键。这款游戏不仅融合了传统与创新的角色设计&#xff0c;还通过一系列前沿的图形渲染技术&#xff0c;为玩家带来了前…

写的一致性问题之双写模式

文章目录 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚2、先写redis&#xff1a; 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚 写入msql成功&#xff0c;写入redis也成功&#xff0c;但是后续事务提交失败&#xff0c;mysql会回滚&a…

遗传算法Github初学

遗传算法的理论是根据达尔文进化论而设计出来的算法&#xff1a;人类是朝着好的方向&#xff08;最优解&#xff09;进化&#xff0c;进化过程中&#xff0c;会自动选择优良基因&#xff0c;淘汰劣等基因 遗传算法&#xff08;genetic algorithm——GA&#xff09;是计算数学中…

记一次Linux安装Maven、Git并拉取SpringBoot代码打包

记一次Linux安装Maven、Git并拉取SpringBoot代码打包 前言一、现在我用的方案二、安装Git三、安装maven四、脚本编写五、idea中运行六、总结 前言 在Java后端开发中&#xff0c;我相信基本上都在用springboot开发&#xff0c;因为它的约定优于配置&#xff0c;自动配置&#x…

五,Spring Boot中的 Spring initializr 的使用

五&#xff0c;Spring Boot中的 Spring initializr 的使用 文章目录 五&#xff0c;Spring Boot中的 Spring initializr 的使用1. 方式1&#xff1a;IDEA创建2. 方式2&#xff1a;start.spring.io 创建3. 注意事项和细节4. 最后&#xff1a; 需要&#xff1a;使用 Spring initi…

html+css网页设计 合十文化2个页面

htmlcss网页设计 合十文化2个页面 ui还原度90% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 …

学习使用双指针

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;leetcode刷题 双指针&#xff0c;有时候是快慢指针的方式来进行题目&#xff0c; 有时候是同向双指针来完成题目&#xff08;这个也叫滑动窗口&#xff09;&#xff0c; 有时候是通过两个…

STM32(F103ZET6)第十九课:FreeRtos的移植和使用

目录 需求一、FreeRtos简介二、移植FreeRtos1.复制代码2.内存空间分配和内核相关接口3.FreeRtosConfig4.添加到工程中三、任务块操作1.任务四种状态2.创建任务过程 需求 1.将FreeRtos&#xff08;嵌入式实时操作系统&#xff09;移植到STM32中。 2.在该系统中实现任务的创建、…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#xff08;KNN分类器&#xff09; 文章目录 一、基本原理原理流程举个例子总结 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#x…

macos MacPort 包管理工具安装和使用

在macos v10.15版本中, xz, python等软件无法使用brew安装, 原因是brew对于旧版本的macos不再支持, 但是我们可以使用另外一个macos下的包管理工具来安装brew无法安装的软件, macport 是一个和brew类似的macos下的一个非常优秀的软件包安装管理工具. MacPort安装前提条件 安…

【qt踩坑】路径含中文导致的报错,以及 OpenGL的链接报错

​ 背景 本来是准备采用VSQt插件的方式来开发Qt的&#xff0c;但是学习过程中发现&#xff0c;这种模式还是没有直接用Qt Creator 开发来的方便&#xff0c;插件这种模式坑多&#xff0c;功能不完善。 不过在直接使用Qt Creator的时候也踩坑了&#xff1a; (最后发现&#x…

SprinBoot+Vue健康管管理微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

qt报错 error: undefined reference to `vtable for RelayDevice 解决方法

在 Qt 编程中&#xff0c;当出现错误 undefined reference to ‘vtable for RelayDevice’ 时&#xff0c;通常是因为类的虚函数没有实现&#xff0c;或者未正确实现虚析构函数。以下是一些可能的解决方法&#xff1a; 确保实现所有虚函数&#xff1a; 检查 RelayDevice 类中声…