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

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

时间:2024-09-01 19:24:43浏览次数:14  
标签:cnADO 创建 数据库 VBA myTable 数据表 strSQL

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

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

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


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

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

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

大家好,今天继续讲解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


代码的截图:

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


2 代码的解读和实现效果

代码的讲解:


1) strSQL = "DROP TABLE " & myTable

cnADO.Execute strSQL

这是通过SQL,使用 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个字符长,不为空

② 总人数 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

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


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

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


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



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

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


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




今日内容回向:

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

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



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








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



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



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











标签:cnADO,创建,数据库,VBA,myTable,数据表,strSQL
From: https://blog.51cto.com/u_16912668/11889753

相关文章

  • 初始MYSQL数据库(1)——创建、删除数据库和数据表的相关操作
    找往期文章包括但不限于本期文章中不懂的知识点:个人主页:我要学编程(ಥ_ಥ)-CSDN博客所属专栏: MYSQL目录数据库的概念数据库的相关操作常用的数据类型 数值型 字符串类型日期类型数据表的相关操作练习数据库的概念数据库(Database)是按照数据结构来组织、存储......
  • PowerDesigner反向生成数据库模型
    PowerDesigner反向生成数据库模型目录1.安装32位JDK2.安装ODBC3.配置ODBC4.更改当前DBMS5.导出数据库模型6.将Name改为Comment安装32位JDKPowerDesigner只支持32位JDK安装ODBC下载地址:https://cdn.mysql.com//Downloads/Connector-ODBC/8.0/mys......
  • PowerDesigner生成数据库表结构
    PowerDesigner生成数据库表结构目录1.安装32位JDK2.更改当前DBMS3.下载MySQL驱动4.生成数据库表结构安装32位JDKPowerDesigner只支持32位JDK更改当前DBMS下载MySQL驱动下载地址:MySQL::BeginYourDownload生成数据库表结构选择Directgen......
  • python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存及转
    一、python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存    做一个简单的事:使用python读取一个txt文件,里面存储着N行用户id,需要一行行读取后再读取另一个存储用户昵称的txt文件,判断昵称是否有重复,如果没有重复就将数据库中的当前uid用户的昵称......
  • 您应该使用哪个矢量数据库? 选择最适合您需求的数据库
    导言矢量数据库已成为存储非结构化和结构化数据表示并编制索引的首选。这些表征被称为向量嵌入,由嵌入模型生成。向量存储在利用深度学习模型(尤其是大型语言模型)的应用开发中发挥着至关重要的作用。什么是矢量数据库?在现实世界中,并非所有数据都能整齐地排列成行和列。......
  • 校园便利|基于SprinBoot+vue的校园便利平台(源码+数据库+文档)
    校园便利平台基于SprinBoot+vue的校园便利平台一、前言二、系统设计三、系统功能设计 系统前台实现系统首页功能用户后台管理功能管理员功能实现四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设......
  • NoSQL:数据库领域的“新潮力量”——从起源到未来的全面解析
    引言曾几何时,关系型数据库(RDBMS)就是数据管理的“老大哥”,一统江湖,所向披靡。然而,随着大数据时代的到来,数据量像火箭般飙升,数据的形态也变得越来越“随性”,传统的关系型数据库开始有点跟不上节奏了。毕竟,当数据像一锅大杂烩一样,什么都有的时候,固定的表结构就显得有点死板了......
  • MySql数据库卸载与安装
    MySql数据库卸载与安装数据库卸载卸载mysql服务打开控制面板-->卸载MySql删除mysql文件夹打开我的电脑-->C盘-->打开隐藏的文件夹ProgramData-->删除MySql文件夹删除注册表windows+r打开运行命令-->regedit(打开注册表)-->HKTY_LOCAL_MACHINE-->SYSTEM只要发现带有ControlSet的文......
  • 关于at32f415 free rtos下使用flash储存数据flash db库在写入数据库操作时,写入次数大
    由于f415的扇区每2k是一块扇区,所以在此处.blk_size=n*1024, //Flash块/扇区大小(因为STM32F2各块大小不均匀,所以擦除粒度为最大块的大小:128K)这个代码中,需要m==2,同理,需要查看你的单片机每个扇区的大小是多少,如果一个扇区的大小是4k,则此处需要填写的是由于f415的扇区每2......
  • VBA代码解决方案第十七讲:如何选择一个工作表,如何选择多个工作表
    《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码摆好。这套教程共三册,一百四十七讲,内容覆......