外链论坛

 找回密码
 立即注册
搜索
查看: 89|回复: 5

VBA数据库处理办法第十一讲:利用VBA代码,动态创立数据库

[复制链接]

2699

主题

182

回帖

9921万

积分

论坛元老

Rank: 8Rank: 8

积分
99210388
发表于 2024-7-10 17:10:28 | 显示全部楼层 |阅读模式

《VBA数据库处理方法》教程(版权10090845)是我推出的第二套教程,日前已然是第二版修订了。这套教程定位置于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中仔细介绍了利用ADO连接ACCDB和EXCEL的办法和实例操作,教程第1版的修订内容重点是完成所有程序文件的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与数据库操作(第1册).xlsm

我20数年的VBA实践经验,所有浓缩在下面的各个教程中:

返回外链论坛:www.fok120.com,查看更加多

责任编辑:网友投稿

回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-20 02:22:42 | 显示全部楼层
请问、你好、求解、谁知道等。
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-7 15:53:07 | 显示全部楼层
哈哈、笑死我了、太搞笑了吧等。
回复

使用道具 举报

2757

主题

7550

回帖

9914万

积分

论坛元老

Rank: 8Rank: 8

积分
99140195
发表于 2024-9-8 12:53:13 | 显示全部楼层
系统提示我验证码错误1500次 \~゛,
回复

使用道具 举报

2689

主题

7430

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99110405
发表于 2024-9-25 22:20:19 | 显示全部楼层
外链论坛的成功举办,是与各位领导、同仁们的关怀和支持分不开的。在此,我谨代表公司向关心和支持论坛的各界人士表示最衷心的感谢!
回复

使用道具 举报

2617

主题

7563

回帖

9998万

积分

论坛元老

Rank: 8Rank: 8

积分
99980668
发表于 2024-9-30 04:20:57 | 显示全部楼层
你的言辞如同繁星闪烁,点亮了我心中的夜空。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-8 09:51 , Processed in 0.079684 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.