大家好,今日我们继续VBA数据库解决方案的第29讲:如何批量修改数据库中的记录。在数据库解决方案中,我在从实际应用的角度,把工作中可能遇到的各种情况都尽可能的给罗列上,我们先后讲了:
①如何在数据库中动态删除和建立数据表(第14讲)
②在已有的数据表中删除、添加、修改字段的方法(第21讲);
③根据工作表中的数据,生成数据库中新的数据表的方法(第22讲);
④向一个已有的数据表中添加数据记录的方法(第23讲);
⑤把工作表中提供的数据在数据表中逐一删除(可以是重复的记录)的通用方法(第24讲);
⑥把工作表中提供的特定数据在数据库中批量删除的方法(第25讲);
⑦把工作表中不存在的记录在数据表中批量删除的方法(第26讲);
⑧把数据表中特殊的记录删除的方法(第27讲);
⑨把数据表中对应工作表的数据首先删除,然后向数据表中导入工作表的数据(第28讲)
以上的各种方法都不是孤立的,有的可以组合利用,比如:第⑨的方法可以用⑤+④的方法解决,大家学习知识千万不可教条,很多朋友希望我能把所有的实际情况都写出来。但那是不可能的,工作中总会遇到实际的问题,要具体的问题具体的分析。
今日我们讲解的内容是如何批量的修改记录,这个问题也可以先删除,再添加记录来解决。当然,我们今日要讲的方法和上述的思路不一样:
实例:如下,数据库中有如下记录:
我们要把民族修正为下面的内容:
如何处理呢,我们看代码:
Sub mynzUpdateRecords_1() '第29讲批量修改记录
Dim cnADO, rsADO As Object
Dim strPath, strTable, strWhere, strSQL, strMsg As String
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "mydata2.accdb"
strTable = "员工信息"
cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & strPath
'汇报给用户记录数
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "当前记录数为:" & rsADO.RecordCount
'构建一个字符串,用在SQL中
i = 1
Do While ActiveSheet.Cells(1, i) <> ""
strField = strField &