VBA-数据库创建,数据表创建

本文介绍如何使用VBA代码在Excel环境中判断Access数据库是否存在,并进行创建或更新操作。包括数据库的创建、数据表的两种创建方法:利用Command对象和SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先我们要判断数据库是否存在,需要引用一个类“Microsoft ADO Ext.6.0 for DDL and Security”,用其catalog 对象来判断数据库是否存在,如果不存在,直接创建数据库和数据表,如果存在则删除

Option Explicit
Sub shifuchunzai()
    Dim con As New ADODB.Connection
    Dim mycat As New ADOX.Catalog
    Dim mydata As String
    Dim sql As String
    mydata = ThisWorkbook.Path & "\成绩管理.accdb" '指定数据库名称
    Dir (mydata) 'go,去找括号里的数据库
   ' MsgBox Dir(mydata)
   '利用dir 函数可以判断某个文件是否存在
    If Len(Dir(mydata)) > 0 Then
        MsgBox "数据库已存在"
       ' kill mydata '删除数据库
        Exit Sub
    End If
    mycat.Create "provider=microsoft.ace.oledb.12.0;data source=" & mydata
    With con
        .Provider = "microsoft.ace.oledb.12.0"
        .Open mydata
    End With
    '创建数据表的SQL命令
    'create table 表名(字段 类型(宽度)约束条件)
    sql = "create table 期中成绩(学号 text(10) not null," _
        & " 姓名 text(8) not null,性别 text(1) not null," _
        & " 班级 text(8) not null,语文 single not null," _
        & " 数学 single not null,英语 single not null," _
        & " 物理 single not null,化学 single not null," _
        & " 生物 single not null,总分 single not null)"
     con.Execute sql
     MsgBox "数据库创建成功", vbInformation, "创建数据库"
     con.Close
     Set con = Nothing
     Set mycat = Nothing
     
    
End Sub

2.在已有的数据库中创建表格以下有两种方法,一种是用command方法创建,一种是用SQL语句创建

Option Explicit
Sub 利用command对象创建表()
    On Error Resume Next
    Dim mycmd As New ADODB.Command
    Dim mycat As New ADOX.Catalog
    Dim mydata As String
    Dim mytable As String
    Dim sql As String
    mydata = ThisWorkbook.Path & "\成绩管理.accdb"
    mytable = "期末成绩"
    '建立数据库连接
    mycat.ActiveConnection = "provider=microsoft.ace.oledb.12.0;data source=" & mydata
    '删除已存在的同名数据表
    mycat.Tables.Delete mytable
    '设置数据库连接,方便接下来创建数据表
    Set mycmd.ActiveConnection = mycat.ActiveConnection
    sql = "create table 期末成绩(学号 text(10) not null," _
        & " 姓名 text(8) not null,性别 text(1) not null," _
        & " 班级 text(8) not null,语文 single not null," _
        & " 数学 single not null,英语 single not null," _
        & " 物理 single not null,化学 single not null," _
        & " 生物 single not null,总分 single not null)"
    '利用command 对象的execute 方法执行命令
    With mycmd
        .CommandText = sql
        .Execute , , adCmdText '表示执行一个文本字符串命令
    End With
    MsgBox "数据表创建成功", vbInformation, "创建数据表"
    Set mycmd = Nothing
    Set mycat = Nothing
    
End Sub
Sub 利用SQL语言创建数据表()
    Dim con As New ADODB.Connection
    Dim mydata As String
    Dim mytable As String
    Dim sql As String
    mydata = ThisWorkbook.Path & "\成绩管理.accdb"
    mytable = "期末成绩"
    '建立数据库连接
    With con
        .Provider = "microsoft.ace.oledb.12.0"
        .Open mydata
    End With
    '删除已有的同名数据表:drop table 表名
    sql = "drop table " & mytable '注意空格
    con.Execute sql
    '设置创建数据标的SQL语句
    sql = "create table 期末成绩(学号 text(10) not null," _
        & " 姓名 text(8) not null,性别 text(1) not null," _
        & " 班级 text(8) not null,语文 single not null," _
        & " 数学 single not null,英语 single not null," _
        & " 物理 single not null,化学 single not null," _
        & " 生物 single not null,总分 single not null)"
    '利用connection对象的execute 方法执行命令
    con.Execute sql
    con.Close
    Set con = Nothing
    MsgBox "数据表创建成功!", vbInformation, "创建数据表"
    

End Sub

 

1-1 利用DAO创建数据库数据表 7 1-2 利用ADOX创建数据库数据表: 8 1-3 利用SQL语句创建数据库数据表 9 1-4 在已有的数据库创建数据表(DAO) 10 1-5 在已有的数据库创建数据表(ADOX) 12 1-6 在已有的数据库创建数据表(SQL,Command对象) 13 1-7 在已有的数据库创建数据表(SQL,Recordset对象) 13 1-8 利用Access对象创建数据库数据表 14 1-8-1 不引用Access对象库而使用Access的有关对象、属性和方法 16 1-9 利用Access对象在已有的数据库创建数据表 17 1-10 利用工作数据创建数据表(ADOX) 18 1-11 利用工作数据创建数据表(ADO+SQL) 21 1-12 利用工作数据创建数据表(DAO) 23 1-13 利用已有的数据表创建数据表(ADO) 25 1-14 利用已有的数据表创建数据表(DAO) 27 1-15 利用已有的数据表创建数据表(Access)(前绑定方法引用Access对象库) 28 2-1 检查数据表是否存在(ADO) 28 •实例2-2 检查数据表是否存在(ADOX) 32 •实例2-3 检查数据表是否存在(DAO) 33 •实例2-4 检查数据表是否存在(Access) 33 •实例2-5 获取数据库中所有的名称和类型(ADO) 34 •实例2-6 获取数据库中所有的名称和类型(ADOX) 35 •实例2-8 获取数据库中所有数据表名称(ADO) 36 •实例2-9 获取数据库中所有数据表名称(ADOX) 37 •实例2-10 获取数据库中所有数据表名称(DAO) 37 •实例2-11 获取数据库中所有数据表名称(Access) 38 •实例2-12 检查某字段是否存在(ADO) 39 •实例2-13 检查某字段是否存在(ADOX) 40 •实例2-14 检查某字段是否存在(DAO) 41 •实例2-15 检查某字段是否存在(Access) 41 •实例2-16 获取数据库中某数据表的所有字段信息(ADO) 42 •实例2-17 获取数据库中某数据表的所有字段信息(ADOX) 44 •实例2-18 获取数据库中某数据表的所有字段信息(DAO) 45 •实例2-19 获取数据库中某数据表的所有字段信息(Access) 47 •实例2-20 获取数据库的所有查询信息(ADOX) 48 •实例2-21 获取数据库的所有查询信息(DAO) 49 •实例2-22 获取数据库的模式信息(openschema) 50 •实例2-23 获取创建日期和最后更新日期(ADOX) 51 •实例2-24 获取创建日期和最后更新日期(DAO) 52 •实例3-1 将数据库记录数据全部导入到excel工作(ADO,之一) 53 •实例3-2 将数据库记录数据全部导入到excel工作(ADO,之二) 54 •实例3-3 将数据库记录数据全部导入到Excel工作(ADO,之三) 55 •实例3-4 将数据库记录数据全部导入到Excel工作(DAO,之一) 56 •实例3-5 将数据库记录数据全部导入到Excel工作(DAO,之二) 57 •实例3-6 将数据库记录数据全部导入到Excel工作(QueryTable集合) 58 •实例3-7 将数据库的某些字段的记录数据导入到Excel工作(ADO) 59 •实例3-8 将数据库的某些字段记录数据导入到Excel工作(DAO) 60 •实例3-9 查询前面的若干条记录(全部字段)(TOP) 61 •实例3-10 查询前面的若干条记录(部分字段)(TOP) 62 •实例3-11 查询不重复的字段记录(DISTINCT) 63 •实例3-12 利用Like运算符进行模糊查询 64 •实例3-13 查询某一区间内的记录(BETWEEN) 65 •实例3-14 查询存在于某个集合里面的记录(IN) 67 •实例3-15 将查询结果进行排序(ORDER BY) 68 •实例3-16 进行复杂条件的查询(WHERE) 69 •实例3-17 利用合计函数进行查询(查询最大值和最小值) 70 •实例3-18 利用合计函数进行查询(查询合计值和平均值) 71 •实例3-19 将一个查询结果作为查询条件进行查询 72 •实例3-20 将查询结果进行分组(GROUP BY) 73 •实例3-21 查询结果进行分组(HAVING) 74 •实例3-22 通过计算列进行查询 76 •实例3-23 使用IS NULL运算符进行查询 77 •实例3-24 使用COUNT函数进行查询 78 •实例3-25 使用FIRST函数与LAST函数查询第一条记录和最后一条记录的字段 78 •实例3-26 使用Parameters参数动态查询记录(DAO)指定单个参数 79 •实例3-27 使用parameters参数动态查询记录(DAO):指定多个参数 80 •实例3-28 使用parameters参数动态查询记录(ADO):指定单个参数 81 •实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 83 •实例3-30 使用别名查询数据库 84 •实例3-31 将查询结果作为窗体控件的源数据 85 •实例3-32 通过窗体控件查询浏览数据库记录 88 •实例3-33 多查询(WHERE连接) 98 •实例3-34 多查询(内连接INNER JOINT) 99 •实例3-35 多查询(左外连接LEFT OUTER JOINT) 101 •实例3-36 多查询(右外连接 RIGHT OUTER JOINT) 102 •实例3-37 多查询(子查询WHERE,ANY,SOME) 103 •实例3-38 多查询(子查询EXISTS,NOT EXISTS) 105 •实例3-39 从两个数据表中查询出都存在的记录 106 •实例3-40 从两个数据表中查询出只存在于某个数据表的记录 108 •实例3-41 将查询结果生成一个数据表 108 •实例3-42 将查询结果保存为一个XML文件 109 •实例3-43 利用工作实现记录的分页显示 110 •实例3-44 利用窗体实现记录的分页显示 113 •实例4-1 添加新记录(ADO+addnew) 116 •实例4-2 添加新记录(ADO+SQL) 117 •实例4-3 添加新记录(DAO+addnew) 118 •实例4-4 添加新记录(DAO+SQL) 118 •实例4-5 添加新记录(Access+SQL) 119 •实例4-6 修改更新特定记录(ADO+SQL) 120 •实例4-7 修改更新特定记录(DAO+SQL) 120 •实例4-8 修改更新特定记录(Access+SQL) 121 •实例4-9 修改更新全部记录(ADO+SQL) 121 •实例4-10 修改更新全部记录(DAO+SQL) 122 •实例4-11 修改更新全部记录(Access+SQL) 122 •实例4-12 删除特定记录(ADO+SQL) 123 •实例4-13 删除特定记录(DAO+SQL) 124 •实例4-14 删除特定记录(Acess+SQL) 124 •实例4-15 删除全部记录(ADO+SQL) 124 •实例4-16 删除全部记录(DAO+SQL) 125 •实例4-17 删除全部记录(Access+SQL) 125 •实例4-18 通过窗体编辑记录 126 •实例5-1 将整个工作数据都保存为新的Access数据库(Access) 128 •实例5-2 将工作的某些区域数据保存为新Access数据库(Access) 129 •实例5-3 将工作簿的所有工作数据分别保存为不同的数据表(Access) 130 •实例5-4 将多个工作簿的某个工作数据汇总为新Access数据库(Access) 131 •实例5-5将多个工作簿的某个工作数据保存为不同的数据表(Access) 132 •实例5-6 将工作数据保存到已有的Access数据库(循环方式)(ADO) 134 •实例5-7 将工作数据保存到已有的Access数据库(循环方式)(DAO) 136 •实例5-8 将工作数据保存到已有的Access数据库(数组方式)(ADO) 138 •实例5-9 将工作数据保存到已有的Access数据库(数组方式)(DAO) 139 •实例5-10 将工作簿的所有工作数据分别保存为不同的数据表(ADO) 141 •实例5-11 将工作簿的所有工作数据分别保存为不同的数据表(DAO) 142 •实例6-1 打开数据库数据表(Getobject函数) 144 •实例6-2 打开数据库数据表(createobject函数) 145 •实例6-3 删除数据表(ADO) 145 •实例6-4 删除数据表(ADOX) 146 •实例6-5 删除数据表(DAO+DELETE) 147 •实例6-6 删除数据表(DAO+SQL) 147 •实例6-7 删除数据表(Access) 148 •实例6-8 为数据表增加字段(ADO) 148 •实例6-9 为数据表增加字段(ADOX) 149 •实例6-10 为数据表增加字段(DAO) 150 •实例6-11 为数据表增加字段(Access) 151 •实例6-12 删除字段(ADO) 152 •实例6-13 删除字段(ADOX) 153 •实例6-14 删除字段(DAO) 154 •实例6-15 删除字段(Access) 155 •实例6-16 改变字段的类型(ADO) 157 •实例6-17 改变字段的类型(DAO) 157 •实例6-18 改变字段的类型(Access) 158 •实例6-19 改变字段的长度(ADO) 158 •实例6-20 改变字段的长度(DAO) 159 •实例6-21 改变字段的长度(Access) 159 •实例6-22 重命名数据表(Access) 159 •实例6-23 复制数据表(Access) 160 •实例6-24 复制数据表(ADO) 161 •实例6-25 复制数据表(DAO) 162 •实例6-26 通过窗体维护数据库 162 •实例7-1 判断SQL Server数据库是否存在(ADO) 172 •实例7-2 检查数据表是否存在(ADOX) 173 •实例7-3 创建新的SQL Server数据库数据表(ADO) 174 •实例7-4 在已有的SQL Servre数据库创建数据表(ADO) 175 •实例7-5 从SQL Server数据库服务器中删除数据库(ADO) 176 •实例7-6 从SQL Server数据库中删除数据表(ADO) 177 •实例7-7 将SQL Server数据库中的数据导入到Excel工作(ADO) 177 •实例7-8 将SQL Server数据库中的数据导入到Excel工作(DAO) 178 •实例7-9 查询获取SQL Server数据库的数据(ADO) 180 •实例7-10 查询获取SQL Server数据库的数据(DAO) 181 •实例7-11 将工作数据导入到SQL Server数据库(ADO) 182 •实例7-12 向SQL Server数据库中添加记录的一般方法 183 •实例7-13 将SQL Server数据库转换为Access数据库 184 •实例7-14 将access数据库转换为SQL Server数据库 185 •实例8-1 将FoxPro数据库全部数据导入到Excel工作 187 •实例8-2 查询获取FoxPro数据库数据 188 •实例8-3 将excel工作数据保存到FoxPro数据库 189 •实例8-4 判断FoxPro数据库的字段是否存在 190 •实例8-5 获取FoxPro数据库的字段信息 190 •实例9-1 从工作簿的某个工作中查询获取数据(ADO) 192 •实例9-2 从工作簿的全部工作中查询获取数据(ADO) 193 •实例9-3 利用DAO从工作中查询数据 194 •实例9-4 查询其他工作簿的数据(ADO) 195 •实例9-6 利用ADO对工作数据进行多重排序 196 •实例9-7 利用ADO按照字符的长度对数据进行排序 197 •实例9-8 比较两张,将两个中相同的行数据抓取出来 198 •实例9-9 比较两张,将只存在于某个中的行数据抓取出来 199 •实例9-10 删除工作数据区域内的所有空行 200 •实例10-2 利用DAO导入文本文件的全部内容 202 •实例10-3 利用ADO导入文本文件的部分内容 203 •实例10-4 利用DAO导入文本文件的部分内容 204 •实例10-5 利用ADO获取文本文件的行数和列数 205 •实例10-6 利用ADO将超过65536行的文本文件数据导入到Excel工作 206 •实例10-7 将工作全部数据保存为文本文件(SaveAs) 208 •实例10-8 将工作全部数据保存为文本文件(循环) 208 •实例10-9 将数据库数据导出为文本文件 209 •实例10-10 将文本文件保存为Access数据库(Access) 210 •实例10-11 将文本文件保存为Access数据库(ADO+ADOX) 211
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值