vba操作数据库-RecordSet的使用

前言

ADODB用来操作数据库是非常方便的。用Recordset对象,可以直接增删改数据库而不用使用SQL ADD/UPDATE/DELETE语句. 这个系列结合自己的实践,全面记录一些使用细节。

ADODB的关键组件

Recordset

  1. 定义

  2. 取得
    可以用connection.execute()方法取得一个recordset, 但是注意这样取得的是只读的,不可修改。
    推荐用rs.open()来获取。

  3. CursorType

在这里插入图片描述

  1. CursorLocation
    在这里插入图片描述

  2. LockType
    在这里插入图片描述

  3. 错误
    在这里插入图片描述
    当对recordset做更新到第9427笔时,出现以下错误提示
    在这里插入图片描述

对于Access, 当CursonLocation 设为adUseClient 时,即使LockType设成adLockBatchOptimistic, 改动recordset值,还是会立即反映到数据库而不是批量处理
当CursonLocation 设为adUseServer 时,LockType设成adLockBatchOptimistic, 可以批量处理,但是会遇到exceed limit错误,即使手动update也不能解决

8. AddNew 方法插入记录
recordset.AddNew FieldList, Values
两个参数可以是单值,也可以是数组。显然用数组比较方便

    Dim arrTitle(1 To 2), arrValue(1 To 2) 'arrValue(1 To 3, 1 To 2)
    arrTitle(1) = "InvNo"
    arrTitle(2) = "Account"
    arrValue(1) = "Inv#001"
    arrValue(2) = "关税"
         
    rsAcc.CursorType = adOpenDynamic
    rsAcc.LockType = adLockOptimistic 'adLockBatchOptimistic
    rsAcc.CursorLocation = adUseServer

    rsAcc.Open "select InvNo,Account from Invoices", cnn, adOpenDynamic, adLockOptimistic
    rsAcc.MoveLast
    rsAcc.AddNew arrTitle, arrValue

另一种方法是用With语句,更清晰

Dim arrValue(1 To 3, 1 To 2), intLine%
'准备数组
For intLine = 1 To 3
   arrValue(intLine, 1) = "Inv#00" & intLine
   arrValue(intLine, 2) = "关税"   
Next intLine
'准备一个空的RecordSet
rsAcc.Open "select * from Invoices where invno = ''", cnn, adOpenDynamic, adLockOptimistic

For intLine = 1 To 3
       With rsAcc
           .AddNew
           .Fields("InvNo") = arrValue(intLine, 1)
           .Fields("Account") = arrValue(intLine, 2)
           .Update
       End With
Next intLine

AddNew 一次只能插入一条记录
更多参考资料
Adding Records Using AddNew Method
Recordset.AddNew method (DAO)
Using AddNew in Immediate and Batch Modes
9. EditMode
在这里插入图片描述

  1. 批量更新 与立即更新
  • LockType = adLockBatchOptimistic + CursorLocation = adUseClient时,即使addnew后立即使用update, 也不会真正update, 要执行updatebatch后才会写到数据库
    下面这个例子中, 虽然CursorType指定的是adOpenDynamic (value = 2), 但实际上系统给的是3 (adOpenStatic)
   With rsAcc
       .CursorLocation = adUseClient
       .CursorType = adOpenDynamic
       .LockType = adLockOptimistic
   End With
   For intLine = 1 To 3
       With rsAcc
           .AddNew
           .Fields("InvNo") = arrValue(intLine, 1)
           .Fields("Account") = arrValue(intLine, 2)
           .Update    '实际没有写入数据库, 改成 MoveNext也是一样
       End With
   Next intLine
   
   rsAcc.UpdateBatch  '到这里才真正写后台数据库

  • 如果将LockType改成adLockOptimistic, CursorLocation 同样是 adUseClient,则addnew后使用update或movenext, 会立即更新

  • 对于Access, CursorLocation = adUseServer + LockType = adLockBatchOptimistic无法工作。addnew一笔后, 只有执行UpdateBatch后,才能继续addnew, 否则会报错Number of rows with pending changes exceeded the limit.:
    在这里插入图片描述

说明LockType 设为adLockBatchOptimistic后,就只能用UpdateBatch才生效

  • 对于Access, CursorLocation = adUseServer + LockType = adLockOptimistic, addnew后用update, 则立即更新到数据库。用UpdateBatch效果与Update一样, 用MoveNext也会立即触发更新
  • 参考资料
    Using AddNew in Immediate and Batch Modes
  1. Delete方法
    recordset.Delete
    删除游标所在的那笔记录。
    如果批量删除,那还是用SQL来得方便

  2. RecordCount属性
    对于Access数据库, CursorLocation = adUseClient时,可以使用recordset.RecordCount属性。CursorLocation = adUseServert时,RecordCount属性返回 -1.

  3. Update记录与AddNew类似, CursorLocation = adUseClient + LockType = adLockBatchOptimistic组合,更新字段后MoveNext或Update, 不会触发实际更新。只有UpdateBatch后,才真正更新

  4. 将RecordSet数据提取到数组

  • 可以用RecordSet.GetRow(行数) 函数
    GetRow()函数返回一个二维数组,注意它的第一维是字段,第二维是记录行。相当于是一个转置的表。代码参考
  • 曲折办法, 先将RecordSet拷贝到Excle中的Range, 再从Range转为数组
    Range.CopyFromRecordset 方法 (Excel) 注意是从RecordSet的当前行(游标所在行)开始,拷到最后一行。
    从range转为数组非常简单,使用Range.Value属性赋值给数组即可, 注意得到的数组下标是从1开始的,不是从0开始的
    如下例, Range数据如下
    在这里插入图片描述
Sub test()
	Dim rg As Range, arr()
	
	Set rg = Sheets("sheet1").Range("C3:F8")
	arr = rg.Value
	
	Debug.Print UBound(arr, 1) & "x" & UBound(arr, 2)
	Debug.Print arr(2, 2)
End Sub

输出结果如下:

6x4
Row2 / Col:2

反过来,把数组值给Range时,需要正确地指定Range的大小,数组与range大小不一致时,规律如下:
(1) 对于重合的部分,取数组中的值
(2) 对于 数组比range多出的部分,忽略
(3) 对于数组比range少的部分,补#N/A
如下图所示
在这里插入图片描述

  1. D
  2. D
  3. D
  4. D
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Excel VBA数据库整合应用范例精讲(书及范例源代码) 内容简介   《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。   全书共11章。第1~6章是利用Excel VBA操作Access数据库的实例;第7~8章是利用Excel VBA操作SQL Server数据库和FoxPro数据库的方法和技巧实例;第9~10章是将工作簿当作数据库以及将文本文件当作数据库进行操作的方法和技巧实例。第11章以一个具有较大使用价值的固定资产管理系统为案例,详细介绍Excel VBA开发管理系统的过程。每个实例分析透彻,代码完整,技巧全面,使用得心应手。 目录 第1章 动态创建Access数据库和数据表 实例1-1 利用DAO创建数据库和数据表 实例1-2 利用ADOX创建数据库和数据表 实例1-3 利用SQL语句创建数据库和数据表 实例1-4 在已有的数据库中创建数据表(DAO) 实例1-5 在已有的数据库中创建数据表(ADOX) 实例1-6 在已有的数据库中创建数据表(SQL,Command对象) 实例1-7 在已有的数据库中创建数据表(SQL,Recordset对象) 实例1-8 利用Access对象创建数据库和数据表 实例1-9 利用Access对象在已有的数据库中创建数据表 实例1-10 利用工作表数据创建数据表(ADOX) 实例1-11 利用工作表数据创建数据表(ADO+SQL) 实例1-12 利用工作表数据创建数据表(DAO) 实例1-13 利用已有的数据表创建新数据表(ADO) 实例1-14 利用已有的数据表创建新数据表(DAO) 实例1-15 利用已有的数据表创建新数据表(Access) 第2章 获取Access数据库信息 实例2-1 检查数据表是否存在(ADO) 实例2-2 检查数据表是否存在(ADOX) 实例2-3 检查数据表是否存在(DAO) 实例2-4 检查数据表是否存在(Access) 实例2-5 获取数据库中所有表的名称和类型(ADO) 实例2-6 获取数据库中所有表的名称和类型(ADOX) 实例2-7 获取数据库中所有的表名称(DAO) 实例2-8 获取数据库中所有数据表名称(ADO) 实例2-9 获取数据库中所有数据表名称(ADOX) 实例2-10 获取数据库中所有数据表名称(DAO) 实例2-11 获取数据库中所有数据表名称(Access) 实例2-12 检查某字段是否存在(ADO) 实例2-13 检查某字段是否存在(ADOX) 实例2-14 检查某字段是否存在(DAO) 实例2-15 检查某字段是否存在(Access) 实例2-16 获取数据库中某数据表的所有字段信息(ADO) 实例2-17 获取数据库中某数据表的所有字段信息(ADOX) 实例2-18 获取数据库中某数据表的所有字段信息(DAO) 实例2-19 获取数据库中某数据表的所有字段信息(Access) 实例2-20 获取数据库的所有查询信息(ADOX) 实例2-21 获取数据库的所有查询信息(DAO) 实例2-22 获取数据库的模式信息(OpenSchema) 实例2-23 获取表的创建日期和最后更新日期(ADOX) 实例2-24 获取表的创建日期和最后更新日期(DAO) 第3章 查询获取Access数据库记录数据 实例3-1 将数据库记录数据全部导入到Excel工作表(ADO,之一) 实例3-2 将数据库记录数据全部导入到Excel工作表(ADO,之二) 实例3-3 将数据库记录数据全部导入到Excel工作表(ADO,之三) 实例3-4 将数据库记录数据全部导入到Excel工作表(DAO,之一) 实例3-5 将数据库记录数据全部导入到Excel工作表(DAO,之二) 实例3-6 将数据库记录数据全部导入到Excel工作表(QueryTable集合) 实例3-7 将数据库的某些字段的记录数据导入到Excel工作表(ADO) 实例3-8 将数据库的某些字段记录数据导入到Excel工作表(DAO) 实例3-9 查询前面的若干条记录(全部字段)(TOP) 实例3-10 查询前面的若干条记录(部分字段)(TOP) 实例3-11 查询不重复的字段记录(DISTINCT) 实例3-12 利用Like运算符进行模糊查询 实例3-13 查询某一区间内的记录(BETWEEN) 实例3-14 查询存在于某个集合里面的记录(IN) 实例3-15 将查询结果进行排序(ORDER BY) 实例3-16 进行复杂条件的查询(WHERE) 实例3-17 利用合计函数进行查询(查询最大值和最小值) 实例3-18 利用合计函数进行查询(查询合计值和平均值) 实例3-19 将一个查询结果作为查询条件进行查询 实例3-20 将查询结果进行分组(GROUP BY) 实例3-21 将查询结果进行分组(HAVING) 实例3-22 通过计算列进行查询 实例3-23 使用IS NULL运算符进行查询 实例3-24 使用COUNT函数进行查询 实例3-25 使用FIRST函数与LAST函数查询第一条记录和最后一条记录的字段 实例3-26 使用Parameters参数动态查询记录(DAO):指定单个参数 实例3-27 使用Parameters参数动态查询记录(DAO):指定多个参数 实例3-28 使用Parameters参数动态查询记录(ADO):指定单个参数 实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 实例3-30 使用别名查询数据库 实例3-31 将查询结果作为窗体控件的源数据 实例3-32 通过窗体控件查询浏览数据库记录 实例3-33 多表查询(WHERE连接) 实例3-34 多表查询(内连接INNER JOINT) 实例3-35 多表查询(左外连接LEFT OUTER JOINT) 实例3-36 多表查询(右外连接RIGHT OUTER JOINT) 实例3-37 多表查询(子查询WHERE,ANY,SOME) 实例3-38 多表查询(子查询EXISTS,NOT EXISTS) 实例3-39 从两个数据表中查询出都存在的记录 实例3-40 从两个数据表中查询出只存在于某个数据表的记录 实例3-41 将查询结果生成一个数据表 实例3-42 将查询结果保存为一个XML文件 实例3-43 利用工作表实现记录的分页显示 实例3-44 利用窗体实现记录的分页显示 第4章 编辑Access数据库数据 实例4-1 添加新记录(ADO+AddNew) 实例4-2 添加新记录(ADO+SQL) 实例4-3 添加新记录(DAO+AddNew) 实例4-4 添加新记录(DAO+SQL) 实例4-5 添加新记录(Access+SQL) 实例4-6 修改更新特定记录(ADO+SQL) 实例4-7 修改更新特定记录(DAO+SQL) 实例4-8 修改更新特定记录(Access+SQL) 实例4-9 修改更新全部记录(ADO+SQL) 实例4-10 修改更新全部记录(DAO+SQL) 实例4-11 修改更新全部记录(Access+SQL) 实例4-12 删除特定记录(ADO+SQL) 实例4-13 删除特定记录(DAO+SQL) 实例4-14 删除特定记录(Access+SQL) 实例4-15 删除全部记录(ADO+SQL) 实例4-16 删除全部记录(DAO+SQL) 实例4-17 删除全部记录(Access+SQL) 实例4-18 通过窗体编辑记录 第5章 将Excel工作表数据导入到Access数据库 实例5-1 将整个工作表数据都保存为新Access数据库(Access) 实例5-2 将工作表的某些区域数据保存为新Access数据库(Access) 实例5-3 将工作簿的所有工作表数据分别保存为不同的数据表(Access) 实例5-4 将多个工作簿的某个工作表数据汇总为新Access数据库(Access) 实例5-5 将多个工作簿的某个工作表数据保存为不同的数据表(Access) 实例5-6 将工作表数据保存到已有的Access数据库(循环方式)(ADO) 实例5-7 将工作表数据保存到已有的Access数据库(循环方式)(DAO) 实例5-8 将工作表数据保存到已有的Access数据库(数组方式)(ADO) 实例5-9 将工作表数据保存到已有的Access数据库(数组方式)(DAO) 实例5-10 将工作簿的所有工作表数据分别保存为不同的数据表(ADO) 实例5-11 将工作簿的所有工作表数据分别保存为不同的数据表(DAO) 第6章 操作Access数据表 实例6-1 打开数据库和数据表(GetObject函数) 实例6-2 打开数据库和数据表(CreateObject函数) 实例6-3 删除数据表(ADO) 实例6-4 删除数据表(ADOX) 实例6-5 删除数据表(DAO+DELETE) 实例6-6 删除数据表(DAO+SQL) 实例6-7 删除数据表(Access) 实例6-8 为数据表增加字段(ADO) 实例6-9 为数据表增加字段(ADOX) 实例6-10 为数据表增加字段(DAO) 实例6-11 为数据表增加字段(Access) 实例6-12 删除字段(ADO) 实例6-13 删除字段(ADOX) 实例6-14 删除字段(DAO) 实例6-15 删除字段(Access) 实例6-16 改变字段的类型(ADO) 实例6-17 改变字段的类型(DAO) 实例6-18 改变字段的类型(Access) 实例6-19 改变字段的长度(ADO) 实例6-20 改变字段的长度(DAO) 实例6-21 改变字段的长度(Access) 实例6-22 重命名数据表(Access) 实例6-23 复制数据表(Access) 实例6-24 复制数据表(ADO) 实例6-25 复制数据表(DAO) 实例6-26 通过窗体维护数据库 第7章 操作SQL Server数据库 实例7-1 判断SQL Server数据库是否存在(ADO) 实例7-2 检查数据表是否存在(ADOX) 实例7-3 创建新的SQL Server数据库和数据表(ADO) 实例7-4 在已有的SQL Server数据库中创建数据表(ADO) 实例7-5 从SQL Server数据库服务器中删除数据库ADO) 实例7-6 从SQL Server数据库中删除数据表(ADO) 实例7-7 将SQL Server数据库中的数据导入到Excel工作表(ADO) 实例7-8 将SQL Server数据库中的数据导入到Excel工作表(DAO) 实例7-9 查询获取SQL Server数据库的数据(ADO) 实例7-10 查询获取SQL Server数据库的数据(DAO) 实例7-11 将工作表数据导入到SQL Server数据库ADO) 实例7-12 向SQL Server数据库中添加记录的一般方法 实例7-13 将SQL Server数据库转换为Access数据库 实例7-14 将Access数据库转换为SQL Server数据库 第8章 操作FoxPro数据库 实例8-1 将FoxPro数据库全部数据导入到Excel工作表 实例8-2 查询获取FoxPro数据库数据 实例8-3 将Excel工作表数据保存到FoxPro数据库 实例8-4 判断FoxPro数据库的字段是否存在 实例8-5 获取FoxPro数据库的字段信息 第9章 将Excel工作簿当作数据库操作 实例9-1 从工作簿的某个工作表中查询获取数据(ADO) 实例9-2 从工作簿的全部工作表中查询获取数据(ADO) 实例9-3 利用DAO从工作表中查询数据 实例9-4 查询其他工作簿的数据(ADO) 实例9-5 获取其他工作簿中的工作表名称清单(ADOX) 实例9-6 利用ADO对工作表数据进行多重排序 实例9-7 利用ADO按照字符的长度对数据进行排序 实例9-8 比较两张表,将两个表中相同的行数据抓取出来 实例9-9 比较两张表,将只存在于某个表中的行数据抓取出来 实例9-10 删除工作表数据区域内的所有空行 第10章 将文本文件当作数据库操作 实例10-1 利用ADO导入文本文件的全部内容 实例10-2 利用DAO导入文本文件的全部内容 实例10-3 利用ADO导入文本文件的部分内容 实例10-4 利用DAO导入文本文件的部分内容 实例10-5 利用ADO获取文本文件的行数和列数 实例10-6 利用ADO将超过65536行的文本文件数据导入到Excel工作表 实例10-7 将工作表全部数据保存为文本文件(SaveAs) 实例10-8 将工作表全部数据保存为文本文件(循环) 实例10-9 将数据库数据导出为文本文件 实例10-10 将文本文件保存为Access数据库(Access) 实例10-11 将文本文件保存为Access数据库ADO+ADOX) 第11章 Excel VBA开发数据库管理系统 11.1 固定资产管理系统的总体设计 11.1.1 固定资产管理系统功能模块 11.1.2 固定资产管理系统数据库和数据表的设计 11.1.3 设计系统工作簿 11.1.4 设计系统的自定义菜单 11.1.5 引用对象库 11.2 系统管理模块设计 11.2.1 用户名和密码的保存 11.2.2 “用户登录”窗口结构设计 11.2.3 “用户登录”窗体程序代码设计 11.2.4 “修改用户名”窗体结构设计 11.2.5 “修改用户名”窗体的程序代码设计 11.2.6 “修改密码”窗体结构设计 11.2.7 “修改密码”窗体的程序代码设计 11.3 基础资料管理模块设计 11.4 固定资产日常管理模块设计 11.4.1 固定资产日常管理窗体的结构设计 11.4.2 固定资产日常管理窗体的程序代码设计 11.4.3 “固定资产查询”窗体的结构设计 11.4.4 “固定资产查询窗体”的程序代码设计 11.4.5 固定资产日常管理模块的应用 11.5 报表输出模块设计 11.5.1 固定资产折旧计算方法 11.5.2 生成固定资产卡片子模块的设计 11.5.3 生成统计报表子模块的设计 11.5.4 生成固定资产折旧表子模块的设计 11.5.5 编制折旧费用分配表子模块的设计 11.6 系统菜单转换模块的设计 11.6.1 恢复Excel系统菜单 11.6.2 恢复固定资产管理系统自定义菜单 11.7 为工作簿指定Open和BeforeClose事件 11.7.1 为工作簿指定Open事件 11.7.2 为工作簿指定BeforeClose事件
Excel VBA数据库整合应用范例精讲(范例文件代码) 内容简介   《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。   全书共11章。第1~6章是利用Excel VBA操作Access数据库的实例;第7~8章是利用Excel VBA操作SQL Server数据库和FoxPro数据库的方法和技巧实例;第9~10章是将工作簿当作数据库以及将文本文件当作数据库进行操作的方法和技巧实例。第11章以一个具有较大使用价值的固定资产管理系统为案例,详细介绍Excel VBA开发管理系统的过程。每个实例分析透彻,代码完整,技巧全面,使用得心应手。 目录 第1章 动态创建Access数据库和数据表 实例1-1 利用DAO创建数据库和数据表 实例1-2 利用ADOX创建数据库和数据表 实例1-3 利用SQL语句创建数据库和数据表 实例1-4 在已有的数据库中创建数据表(DAO) 实例1-5 在已有的数据库中创建数据表(ADOX) 实例1-6 在已有的数据库中创建数据表(SQL,Command对象) 实例1-7 在已有的数据库中创建数据表(SQL,Recordset对象) 实例1-8 利用Access对象创建数据库和数据表 实例1-9 利用Access对象在已有的数据库中创建数据表 实例1-10 利用工作表数据创建数据表(ADOX) 实例1-11 利用工作表数据创建数据表(ADO+SQL) 实例1-12 利用工作表数据创建数据表(DAO) 实例1-13 利用已有的数据表创建新数据表(ADO) 实例1-14 利用已有的数据表创建新数据表(DAO) 实例1-15 利用已有的数据表创建新数据表(Access) 第2章 获取Access数据库信息 实例2-1 检查数据表是否存在(ADO) 实例2-2 检查数据表是否存在(ADOX) 实例2-3 检查数据表是否存在(DAO) 实例2-4 检查数据表是否存在(Access) 实例2-5 获取数据库中所有表的名称和类型(ADO) 实例2-6 获取数据库中所有表的名称和类型(ADOX) 实例2-7 获取数据库中所有的表名称(DAO) 实例2-8 获取数据库中所有数据表名称(ADO) 实例2-9 获取数据库中所有数据表名称(ADOX) 实例2-10 获取数据库中所有数据表名称(DAO) 实例2-11 获取数据库中所有数据表名称(Access) 实例2-12 检查某字段是否存在(ADO) 实例2-13 检查某字段是否存在(ADOX) 实例2-14 检查某字段是否存在(DAO) 实例2-15 检查某字段是否存在(Access) 实例2-16 获取数据库中某数据表的所有字段信息(ADO) 实例2-17 获取数据库中某数据表的所有字段信息(ADOX) 实例2-18 获取数据库中某数据表的所有字段信息(DAO) 实例2-19 获取数据库中某数据表的所有字段信息(Access) 实例2-20 获取数据库的所有查询信息(ADOX) 实例2-21 获取数据库的所有查询信息(DAO) 实例2-22 获取数据库的模式信息(OpenSchema) 实例2-23 获取表的创建日期和最后更新日期(ADOX) 实例2-24 获取表的创建日期和最后更新日期(DAO) 第3章 查询获取Access数据库记录数据 实例3-1 将数据库记录数据全部导入到Excel工作表(ADO,之一) 实例3-2 将数据库记录数据全部导入到Excel工作表(ADO,之二) 实例3-3 将数据库记录数据全部导入到Excel工作表(ADO,之三) 实例3-4 将数据库记录数据全部导入到Excel工作表(DAO,之一) 实例3-5 将数据库记录数据全部导入到Excel工作表(DAO,之二) 实例3-6 将数据库记录数据全部导入到Excel工作表(QueryTable集合) 实例3-7 将数据库的某些字段的记录数据导入到Excel工作表(ADO) 实例3-8 将数据库的某些字段记录数据导入到Excel工作表(DAO) 实例3-9 查询前面的若干条记录(全部字段)(TOP) 实例3-10 查询前面的若干条记录(部分字段)(TOP) 实例3-11 查询不重复的字段记录(DISTINCT) 实例3-12 利用Like运算符进行模糊查询 实例3-13 查询某一区间内的记录(BETWEEN) 实例3-14 查询存在于某个集合里面的记录(IN) 实例3-15 将查询结果进行排序(ORDER BY) 实例3-16 进行复杂条件的查询(WHERE) 实例3-17 利用合计函数进行查询(查询最大值和最小值) 实例3-18 利用合计函数进行查询(查询合计值和平均值) 实例3-19 将一个查询结果作为查询条件进行查询 实例3-20 将查询结果进行分组(GROUP BY) 实例3-21 将查询结果进行分组(HAVING) 实例3-22 通过计算列进行查询 实例3-23 使用IS NULL运算符进行查询 实例3-24 使用COUNT函数进行查询 实例3-25 使用FIRST函数与LAST函数查询第一条记录和最后一条记录的字段 实例3-26 使用Parameters参数动态查询记录(DAO):指定单个参数 实例3-27 使用Parameters参数动态查询记录(DAO):指定多个参数 实例3-28 使用Parameters参数动态查询记录(ADO):指定单个参数 实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 实例3-30 使用别名查询数据库 实例3-31 将查询结果作为窗体控件的源数据 实例3-32 通过窗体控件查询浏览数据库记录 实例3-33 多表查询(WHERE连接) 实例3-34 多表查询(内连接INNER JOINT) 实例3-35 多表查询(左外连接LEFT OUTER JOINT) 实例3-36 多表查询(右外连接RIGHT OUTER JOINT) 实例3-37 多表查询(子查询WHERE,ANY,SOME) 实例3-38 多表查询(子查询EXISTS,NOT EXISTS) 实例3-39 从两个数据表中查询出都存在的记录 实例3-40 从两个数据表中查询出只存在于某个数据表的记录 实例3-41 将查询结果生成一个数据表 实例3-42 将查询结果保存为一个XML文件 实例3-43 利用工作表实现记录的分页显示 实例3-44 利用窗体实现记录的分页显示 第4章 编辑Access数据库数据 实例4-1 添加新记录(ADO+AddNew) 实例4-2 添加新记录(ADO+SQL) 实例4-3 添加新记录(DAO+AddNew) 实例4-4 添加新记录(DAO+SQL) 实例4-5 添加新记录(Access+SQL) 实例4-6 修改更新特定记录(ADO+SQL) 实例4-7 修改更新特定记录(DAO+SQL) 实例4-8 修改更新特定记录(Access+SQL) 实例4-9 修改更新全部记录(ADO+SQL) 实例4-10 修改更新全部记录(DAO+SQL) 实例4-11 修改更新全部记录(Access+SQL) 实例4-12 删除特定记录(ADO+SQL) 实例4-13 删除特定记录(DAO+SQL) 实例4-14 删除特定记录(Access+SQL) 实例4-15 删除全部记录(ADO+SQL) 实例4-16 删除全部记录(DAO+SQL) 实例4-17 删除全部记录(Access+SQL) 实例4-18 通过窗体编辑记录 第5章 将Excel工作表数据导入到Access数据库 实例5-1 将整个工作表数据都保存为新Access数据库(Access) 实例5-2 将工作表的某些区域数据保存为新Access数据库(Access) 实例5-3 将工作簿的所有工作表数据分别保存为不同的数据表(Access) 实例5-4 将多个工作簿的某个工作表数据汇总为新Access数据库(Access) 实例5-5 将多个工作簿的某个工作表数据保存为不同的数据表(Access) 实例5-6 将工作表数据保存到已有的Access数据库(循环方式)(ADO) 实例5-7 将工作表数据保存到已有的Access数据库(循环方式)(DAO) 实例5-8 将工作表数据保存到已有的Access数据库(数组方式)(ADO) 实例5-9 将工作表数据保存到已有的Access数据库(数组方式)(DAO) 实例5-10 将工作簿的所有工作表数据分别保存为不同的数据表(ADO) 实例5-11 将工作簿的所有工作表数据分别保存为不同的数据表(DAO) 第6章 操作Access数据表 实例6-1 打开数据库和数据表(GetObject函数) 实例6-2 打开数据库和数据表(CreateObject函数) 实例6-3 删除数据表(ADO) 实例6-4 删除数据表(ADOX) 实例6-5 删除数据表(DAO+DELETE) 实例6-6 删除数据表(DAO+SQL) 实例6-7 删除数据表(Access) 实例6-8 为数据表增加字段(ADO) 实例6-9 为数据表增加字段(ADOX) 实例6-10 为数据表增加字段(DAO) 实例6-11 为数据表增加字段(Access) 实例6-12 删除字段(ADO) 实例6-13 删除字段(ADOX) 实例6-14 删除字段(DAO) 实例6-15 删除字段(Access) 实例6-16 改变字段的类型(ADO) 实例6-17 改变字段的类型(DAO) 实例6-18 改变字段的类型(Access) 实例6-19 改变字段的长度(ADO) 实例6-20 改变字段的长度(DAO) 实例6-21 改变字段的长度(Access) 实例6-22 重命名数据表(Access) 实例6-23 复制数据表(Access) 实例6-24 复制数据表(ADO) 实例6-25 复制数据表(DAO) 实例6-26 通过窗体维护数据库 第7章 操作SQL Server数据库 实例7-1 判断SQL Server数据库是否存在(ADO) 实例7-2 检查数据表是否存在(ADOX) 实例7-3 创建新的SQL Server数据库和数据表(ADO) 实例7-4 在已有的SQL Server数据库中创建数据表(ADO) 实例7-5 从SQL Server数据库服务器中删除数据库ADO) 实例7-6 从SQL Server数据库中删除数据表(ADO) 实例7-7 将SQL Server数据库中的数据导入到Excel工作表(ADO) 实例7-8 将SQL Server数据库中的数据导入到Excel工作表(DAO) 实例7-9 查询获取SQL Server数据库的数据(ADO) 实例7-10 查询获取SQL Server数据库的数据(DAO) 实例7-11 将工作表数据导入到SQL Server数据库ADO) 实例7-12 向SQL Server数据库中添加记录的一般方法 实例7-13 将SQL Server数据库转换为Access数据库 实例7-14 将Access数据库转换为SQL Server数据库 第8章 操作FoxPro数据库 实例8-1 将FoxPro数据库全部数据导入到Excel工作表 实例8-2 查询获取FoxPro数据库数据 实例8-3 将Excel工作表数据保存到FoxPro数据库 实例8-4 判断FoxPro数据库的字段是否存在 实例8-5 获取FoxPro数据库的字段信息 第9章 将Excel工作簿当作数据库操作 实例9-1 从工作簿的某个工作表中查询获取数据(ADO) 实例9-2 从工作簿的全部工作表中查询获取数据(ADO) 实例9-3 利用DAO从工作表中查询数据 实例9-4 查询其他工作簿的数据(ADO) 实例9-5 获取其他工作簿中的工作表名称清单(ADOX) 实例9-6 利用ADO对工作表数据进行多重排序 实例9-7 利用ADO按照字符的长度对数据进行排序 实例9-8 比较两张表,将两个表中相同的行数据抓取出来 实例9-9 比较两张表,将只存在于某个表中的行数据抓取出来 实例9-10 删除工作表数据区域内的所有空行 第10章 将文本文件当作数据库操作 实例10-1 利用ADO导入文本文件的全部内容 实例10-2 利用DAO导入文本文件的全部内容 实例10-3 利用ADO导入文本文件的部分内容 实例10-4 利用DAO导入文本文件的部分内容 实例10-5 利用ADO获取文本文件的行数和列数 实例10-6 利用ADO将超过65536行的文本文件数据导入到Excel工作表 实例10-7 将工作表全部数据保存为文本文件(SaveAs) 实例10-8 将工作表全部数据保存为文本文件(循环) 实例10-9 将数据库数据导出为文本文件 实例10-10 将文本文件保存为Access数据库(Access) 实例10-11 将文本文件保存为Access数据库ADO+ADOX) 第11章 Excel VBA开发数据库管理系统 11.1 固定资产管理系统的总体设计 11.1.1 固定资产管理系统功能模块 11.1.2 固定资产管理系统数据库和数据表的设计 11.1.3 设计系统工作簿 11.1.4 设计系统的自定义菜单 11.1.5 引用对象库 11.2 系统管理模块设计 11.2.1 用户名和密码的保存 11.2.2 “用户登录”窗口结构设计 11.2.3 “用户登录”窗体程序代码设计 11.2.4 “修改用户名”窗体结构设计 11.2.5 “修改用户名”窗体的程序代码设计 11.2.6 “修改密码”窗体结构设计 11.2.7 “修改密码”窗体的程序代码设计 11.3 基础资料管理模块设计 11.4 固定资产日常管理模块设计 11.4.1 固定资产日常管理窗体的结构设计 11.4.2 固定资产日常管理窗体的程序代码设计 11.4.3 “固定资产查询”窗体的结构设计 11.4.4 “固定资产查询窗体”的程序代码设计 11.4.5 固定资产日常管理模块的应用 11.5 报表输出模块设计 11.5.1 固定资产折旧计算方法 11.5.2 生成固定资产卡片子模块的设计 11.5.3 生成统计报表子模块的设计 11.5.4 生成固定资产折旧表子模块的设计 11.5.5 编制折旧费用分配表子模块的设计 11.6 系统菜单转换模块的设计 11.6.1 恢复Excel系统菜单 11.6.2 恢复固定资产管理系统自定义菜单 11.7 为工作簿指定Open和BeforeClose事件 11.7.1 为工作簿指定Open事件 11.7.2 为工作簿指定BeforeClose事件
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函
VBA中,我们可以使用Recordset对象来更新Access数据库。下面是一个简单的步骤来更新数据库: 1. 创建连接对象并打开数据库。我们可以使用ADODB库中的Connection对象来建立与数据库的连接,并使用Open方法打开数据库文件。例如: ```vba Dim conn As New ADODB.Connection conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=path\to\database.accdb" ``` 2. 创建Recordset对象并执行SQL查询。我们可以使用Recordset对象来执行SQL查询,并使用Open方法指定查询语句。例如: ```vba Dim rs As New ADODB.Recordset rs.Open "SELECT * FROM TableName", conn ``` 3. 更新数据库记录。我们可以使用Recordset对象的Edit和Update方法来编辑和更新记录。例如,假设我们要更新某个字段的值: ```vba rs.Edit rs("FieldName") = "NewValue" rs.Update ``` 4. 关闭Recordset和连接对象。完成更新后,我们应该关闭Recordset和连接对象以释放资源。例如: ```vba rs.Close Set rs = Nothing conn.Close Set conn = Nothing ``` 完整的更新过程如下所示: ```vba Sub UpdateDatabase() Dim conn As New ADODB.Connection conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=path\to\database.accdb" Dim rs As New ADODB.Recordset rs.Open "SELECT * FROM TableName", conn rs.Edit rs("FieldName") = "NewValue" rs.Update rs.Close Set rs = Nothing conn.Close Set conn = Nothing End Sub ``` 以上就是使用VBA Recordset对象更新Access数据库的简单步骤。根据需要,您可以使用适当的SQL查询来更新不同的字段和记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值