![6acc6ba18e84444c9a085c7c3417bf56.png](https://i-blog.csdnimg.cn/blog_migrate/3fbab839c5d42474a0cc570308187c8a.jpeg)
大家好,今日我们继续VBA数据库解决方案的第30讲:如何批量修改数据库中的特定记记录数据。在上一讲中,我们讲了批量编辑数据的方案,用到的是UPDATE方法,今日我们仍用此方法解决删除特定记录。这些记录是由于是特殊的,我们可以结合SQL语句来完成我们的需求。同时我们也可以把这些固定的需求转换为动态的需求,只要略加改正就可以了。
今日的实例;下面的工作表为数据库中员工信息表的记录,
![8c54e2293c91740162eb54b824c969b4.png](https://i-blog.csdnimg.cn/blog_migrate/71c90ab9651219698621e8e14f59b008.jpeg)
我们要把其中部门是“一厂”“二厂”的记录修正为“三厂”,如何做到呢?
我们先看代码,代码如下:
Sub mynzUpdateRecords_2()
'第30讲批量修改记录集中的某些特殊记录,从而达到快捷迅速
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
'设定要修改的条件为把部门='一厂'或者'二厂' 修改为'三厂'
strSQL = "UPDATE " & strTable & " SET 部门='三厂' WHERE 部门='一厂' OR 部门='二厂'"
cnADO.Execute strSQL
MsgBox "数据修改成功。", vbInformation, "数据修改"
rsADO.Close
'汇报给用户记录数
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "最后的记录数为:" & rsADO.RecordCount
'释放内存
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代码截图:
![4b2d1fa622ccf77451b61295074c7466.png](https://i-blog.csdnimg.cn/blog_migrate/0b73a57fe0f97037fa97ea967cae2a92.jpeg)
代码的解释:我们只需要看看本讲的SQL语句即可:
strSQL = "UPDATE " & strTable & " SET 部门='三厂' WHERE 部门='一厂' OR 部门='二厂'"
cnADO.Execute strSQL
MsgBox "数据修改成功。", vbInformation, "数据修改"
在上述代码中,SQL语句的意义是将部门为部门='一厂' OR 部门='二厂' 的人员修改为部门='一厂',然后Execute strSQL,执行SQL语句。
需要注意点是,在执行SQL预计前一定要先打开数据表,数据表如果是关闭的,将无法执行。
在开篇提到的动态修改记录的方案是修改上面WHERE之后语句,让条件在工作表单元格中体现,然后在此语句中关联到单元格的内容即可实现可以动态的修正。
下面看我们今日代码的执行过程:
在上面的工作表中点击“修改编辑特定记录的按钮”:
![f3bb41f7ca85c87ab6c90c11d5d020de.png](https://i-blog.csdnimg.cn/blog_migrate/9f7455e5e60bd57824c15e4408958260.jpeg)
首先会显示当前记录数:
![de8040e7c2f006ec076764bed6150edc.png](https://i-blog.csdnimg.cn/blog_migrate/0ce897a1f0251df9613778fa815a0976.jpeg)
然后提示记录修改成功:
![dc272f0fff7c8860ae97ef400226d583.png](https://i-blog.csdnimg.cn/blog_migrate/5969f5a00d71fa9c82f5590dac7dcca7.jpeg)
最后提示记录数:
![02e71bf1df03bbfb0b559757bf587eef.png](https://i-blog.csdnimg.cn/blog_migrate/ff9fc0a804e05e407c582df4626ddc8c.jpeg)
回头我们再看看数据库中的记录,点击显示总记录数:
![6efc3324419d3d6cc3769466e8e16a3d.png](https://i-blog.csdnimg.cn/blog_migrate/d78b040e21f2605f59840c43cf824291.jpeg)
今日内容回向:
1 如何处理编辑特定记录?
2 上述方法还可以用之前讲过的哪个方法实现?
《VBA代码解决方案》系列电子书,是我将一些非常实用的VBA内容结集成册,PDF格式文件,朋友们可以从中查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。