VBA数据库解决方案第十一讲:利用VBA代码,动态建立数据库

VBA语言専攻 2024-06-01 10:59:08

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

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

【分享成果,随喜正能量】 以时寝息,当愿众生,身得安隐,心无动乱 。愿我们都能,梦见幸福!。

第十一讲 利用VBA代码,动态建立数据库

大家好,今日继续讲解VBA数据库解决方案的第11讲内容,如何动态的建立数据库。

VBA代码数据库解决方案一书写到这里,已经讲了很多,相信大家对于数据库的概念应该了然于胸了。我们也开始逐步讲解数据库的实际操作,有的朋友说你示例中数据库是事先建立的,是否可以用VBA代码动态建立数据库呢?今日的这讲我们就解决这个问题。在程序中动态的建立数据库是完全可以实现的,今日的内容需要用到的知识点为ADOX,我们要先对这个知识点进行必要的讲解。

1 什么是ADOX

ADOX是Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security 的简写,是对ADO对象和编程模型的扩展。可用于创建、修改和删除模式对象,如表格的创建,安全对象的实施,可用于维护用户和组,以及授予和撤消对象的权限。

要通过开发工具使用ADOX,首先需要建立对 ADOX 的引用。引用对象为:“Microsoft ADO Ext. for DDL and Security.”当然也可以在过程中创建,我这时讲到引用和过程中创建,朋友们不会陌生了。这和ADO的应用和创建是一个道理。

2 ADOX的对象

ADOX的对象主要用下面的内容

2.1 Catalog 包含描述数据源模式目录的集合。

2.2 Column 表示表、索引或关键字的列。

2.3 Group 表示在安全数据库内有访问权限的组帐号。

2.4 Index 表示数据库表中的索引。

2.5 Key 表示数据库表中的主关键字、外部关键字或唯一关键字。

2.6 Procedure 表示存储的过程。

2.7 Table 表示数据库表,包括列、索引和关键字。

3 ADOX对象的方法

3.1 Append(Columns) 将新的 Column 对象添加到 Columns 集合。

3.2 Append(Groups) 将新的 Group 对象添加到 Groups 集合。

3.3 Append(Indexes) 将新的 Index 对象添加到 Indexes 集合。

3.4 Append(Keys) 将新的 Key 对象添加到 Keys 集合。

3.5 Append(Procedures) 将新的 Procedure 对象添加到 Procedures 集合。

3.6 Append(Tables) 将新的 Table 对象添加到 Tables 集合。

3.7 ChangePassword 更改用户帐号的密码。

3.8 Create 创建新的目录。

3.9 Delete 删除集合中的对象。

3.10 Refresh 更新集合中的对象,以反映针对提供者可用的和指定的对象。

4 ADOX对象的属性

4.1 Count 指示集合中的对象数量。

4.2 DefinedSize 指示列的规定最大大小。

4.3 DeleteRule 指示主关键字被删除时将执行的操作。

4.4 IndexNulls 指示在索引字段中有 Null 值的记录是否有索引项。

4.5 Name 指示对象的名称。

4.6 NumericScale 指示列中数值的范围。

4.7 Precision 指示列中数据值的最高精度。

4.8 PrimaryKey 指示索引是否代表表的主关键字。

4.9 RelatedColumn 指示相关表中相关列的名称(仅关键字列)。

4.10 SortOrder 指示列的排序顺序(仅索引列)。

4.11 Type(关键字) 指示关键字的数据类型。

5 利用ADOX创建一个数据库的实例

我们看下面的代码:

Sub mynz_11'创建数据库及表

Dim catADO As Object

Dim strPath As String, strTable As String, 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

代码截图:

代码的解读:由于大部分在代码有注释只需要再解释两个语句:

1) strSQL = "CREATE TABLE " & strTable

SQL 中的CREATE TABLE 语句用于创建数据库中的表。SQL CREATE TABLE 语法:

CREATE TABLE 表名称(列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,....)

2) catADO.ActiveConnection.Execute strSQL

这句的解释在上一讲中已经详细的讲过了,没有记录集的返回

运行结果:

打开数据库和表:

今日内容回向:

1 如何创建一个数据库?

2 如何创建数据库中的表?

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

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

0 阅读:10