网站首页 > 博客文章 正文
《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是: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
代码的截图:
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
上述代码是关闭连接,并释放内存。在代码的编写过程中。一定记着最后要关闭连接和记录集,最后还要释放内存。
下面我们看看代码的运行:
如果是原先存在此数据表,则会有下面的提示:
今日内容回向:
1 如何创建和删除一个数据库中的数据表?
2 创建一个数据表的字段是如何添加的?
本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
猜你喜欢
- 2025-07-27 别再用雪花算法生成ID了!试试这个吧
- 2025-07-27 Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
- 2025-07-27 业务系统性能问题诊断和优化分析(业务系统性能问题诊断和优化分析报告)
- 2025-07-27 数据库中如何批量添加指定数据(数据库批量新增数据)
- 2025-07-27 Instagram架构的分片和ID的设计(ins的分类)
- 2025-07-27 MySQL数据库安装教程(mysql数据库安装方法)
- 2025-07-27 SOLIDWORKS Electrical卸载与升级安装操作步骤
- 2025-07-27 数据库分库分表解决方案汇总(数据库分库分表思路)
- 2025-07-27 根据工作表数据生成数据库(根据excel生成数据库表结构)
- 2025-07-27 Docker安装部署Oracle/Sql Server
你 发表评论:
欢迎- 最近发表
-
- 别再用雪花算法生成ID了!试试这个吧
- Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
- 业务系统性能问题诊断和优化分析(业务系统性能问题诊断和优化分析报告)
- 数据库中如何批量添加指定数据(数据库批量新增数据)
- Instagram架构的分片和ID的设计(ins的分类)
- VBA数据库解决方案第十四讲:如何在数据库中动态删除和建立数据表
- MySQL数据库安装教程(mysql数据库安装方法)
- SOLIDWORKS Electrical卸载与升级安装操作步骤
- 数据库分库分表解决方案汇总(数据库分库分表思路)
- 根据工作表数据生成数据库(根据excel生成数据库表结构)
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)