ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2140|回复: 6

[原创] 如何利用VBA代码动态地建立数据库

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-12 11:27 | 显示全部楼层 |阅读模式
在程序中动态地建立数据库是完全可以实现的,这里需要用到ADOX知识点,我们先进行必要的讲解。
一 什么是ADOX:ADOX是Microsoft ActiveX Data ObjectsExtensions for Data Definition Language and Security 的简写,是对ADO对象和编程模型的扩展。可用于创建、修改和删除模式对象,如表格的创建,安全对象的实施,可用于维护用户和组,以及授予和撤消对象的权限。
要通过开发工具使用ADOX,首先需要建立对 ADOX 的引用。引用对象为:“Microsoft ADO Ext.for DDL and Security.”当然也可以在过程中创建,估计我这时讲到引用和过程中创建,朋友们不会陌生了。这和ADO的应用和创建是一个道理。
二 ADOX的对象有哪些,ADOX的对象主要用下面的内容
1 Catalog   包含描述数据源模式目录的集合。
2 Column    表示表、索引或关键字的列。
3  Group    表示在安全数据库内有访问权限的组帐号。
4  Index    表示数据库表中的索引。
5  Key      表示数据库表中的主关键字、外部关键字或唯一关键字。
6 Procedure  表示存储的过程。
7 Table    表示数据库表,包括列、索引和关键字。
三 ADOX的方法有哪些
1 Append(Columns) 将新的 Column 对象添加到 Columns 集合。
2 Append(Groups) 将新的 Group 对象添加到 Groups 集合。
3 Append(Indexes) 将新的 Index 对象添加到 Indexes 集合。
4 Append(Keys) 将新的 Key 对象添加到 Keys 集合。
5 Append(Procedures) 将新的Procedure 对象添加到 Procedures 集合。
6 Append(Tables) 将新的 Table 对象添加到 Tables 集合。
7 ChangePassword 更改用户帐号的密码。
8 Create 创建新的目录。
9 Delete 删除集合中的对象。
10 Refresh 更新集合中的对象,以反映针对提供者可用的和指定的对象。
四  ADOX 属性
1 Count 指示集合中的对象数量。
2 DefinedSize 指示列的规定最大大小。
3 DeleteRule 指示主关键字被删除时将执行的操作。
4 IndexNulls 指示在索引字段中有 Null 值的记录是否有索引项。
5 Name 指示对象的名称。
6 NumericScale 指示列中数值的范围。
7 Precision 指示列中数据值的最高精度。
8 PrimaryKey 指示索引是否代表表的主关键字。
9 RelatedColumn 指示相关表中相关列的名称(仅关键字列)。
10 SortOrder 指示列的排序顺序(仅索引列)。
11 Type(关键字) 指示关键字的数据类型。
五 我们下面看看一个实例如何利用ADOX创建一个数据库
我们看下面的代码:
Sub mynzSetData() '创建数据库及表
   Dim catADO As Object
   Dim strPath, strTable, strSQL As String
   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 '打开数据库的连接
    '下面的代码将创建一个名为员工记录的表包含的字段有员工编号、姓名、性别、部门、职务、备注
   strSQL = "CREATE TABLE " & strTable _
       & "(员工编号 long not null primary key," _
       & "姓名 text(20) not null," _
       & "性别 text(1) not null," _
       & "部门 text(20) not null," _
       & "职务 text(20) ," _
       & "备注 text(20))"
   catADO.ActiveConnection.Execute strSQL
   MsgBox "创建数据库成功!" & vbCrLf _
        & "数据库文件名为:" & strPath & vbCrLf _
        & "数据表名称为:" & strTable & vbCrLf _
        & "保存位置:" & ThisWorkbook.Path, _
        vbOKOnly + vbInformation, "创建数据库"
    Set catADO = Nothing
End Sub
代码截图:
image001.png

代码的解释说明:由于大部分在代码有注释只需要再解释两个语句:
1 strSQL = "CREATE TABLE" & strTable
SQL 中的CREATE TABLE 语句用于创建数据库中的表。
SQL CREATE TABLE 语法:
CREATE TABLE 表名称(列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,....)
2 catADO.ActiveConnection.ExecutestrSQL
这句的解释在上一讲中已经详细的讲过了,没有记录集的返回
运行结果:
image003.png
打开数据库和表:
image005.png

为了更好地理解掌握上面的内容,有2个问题供大家思考:1.如何创建一个数据库?2.如何创建数据库中的表?

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-6-12 14:01 来自手机 | 显示全部楼层
不错,谢谢分享

TA的精华主题

TA的得分主题

发表于 2019-6-12 15:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
看起来高大上,先留个抓印

TA的精华主题

TA的得分主题

发表于 2019-6-12 15:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-6-12 16:01 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-6-12 16:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-6-12 17:37 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 18:30 , Processed in 0.041817 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表