【分享成果,随喜正能量】无关紧要时,不想说就别逼自己说。一定要说时,想清楚你的观点,你想做什么,说话对象是谁,场合是否适宜说。尽量慢点说,不要着急,把要说的事情分清主次,开始的时候尽量只是阐述事实,少加入个人观点,慢慢好了再加入观点,同时也多听听别人怎么说的。
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第31讲:数据库的DELETE+ADDNEW

第三十一讲 DELETE+ADDNEW实现类似于UPDATA功能
大家好,今日我们继续VBA数据库解决方案的第31讲:用DELETE+ADDNEW的方法实现类似于UPDATA的方法实例。在最近的讲解中,我总在强调,实现目的方法有很多种,我们要灵活的对应。今日我们的内容同上一讲的目的一样,但我们要用其他的方法来实现。内容是用DELETE+ADDNEW的方法实现类似UPDATA的方法。
1 应用场景的具体分析
实例:下面的工作表为数据库中员工信息表的记录

我们要把其中部门是“一厂”“二厂”的记录修正为“三厂”,用DELETE+ADDNEW如何做到呢?
2 DELETE+ADDNEW方法实现批量编辑的代码及代码解读
好的,我们仍是先看看程序代码:
Sub mynz_31()
'第31讲 用DELETE+ADDNEW的方法实现UPDATA的方法
[详细代码见教程]
End Sub
部分代码截图:

代码的解读:
1)先删除记录:
strWhere = " WHERE EXISTS(" _
& "SELECT * FROM [Excel 12.0;Database=" _
& ThisWorkbook.FullName & "].[" & ActiveSheet.Name & "$" _
& Range("a1").CurrentRegion.Address(0, 0) & "] " _
& "WHERE 员工编号=" & strTable & ".员工编号)"
strSQL = "SELECT 员工编号 FROM " & strTable & strWhere
rsADO.Open strSQL, cnADO, 1, 3
If rsADO.RecordCount > 0 Then
strSQL = "DELETE FROM " & strTable & strWhere
cnADO.Execute strSQL
MsgBox rsADO.RecordCount & "条记录被删除。", vbInformation, "提示"
Else
MsgBox "没有发现需要删除的记录。", vbInformation, "提示"
End If
rsADO.Close
'汇报给用户记录数
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "删除后记录数为:" & rsADO.RecordCount
这段代码实现了将工作表的数据在数据表中删除的功能,并随时汇报后台程序的进展情况。
2) 在运行完删除的功能后,将进入到下面的代码:
'添加记录
Sheets(ActiveSheet.Name).Select
t = 2
Do While Cells(t, 1) <> ""
If rsADO.RecordCount > 0 Then rsADO.MoveLast
rsADO.addnew
For i = 0 To rsADO.Fields.Count - 1
rsADO.Fields(i) = ActiveSheet.Cells(t, i + 1)
Next i
rsADO.Update
t = t + 1
Loop
'汇报给用户最后的记录数
MsgBox "添加后记录数为:" & rsADO.RecordCount
以上代码将根据工作表中提供的数据在数据表中添加记录。
下面我们看看程序的运行,首先会提示给用户删除前的记录数:

接着提示删除的记录数:

并告诉用户删除后记录数为0:

最后添加记录,并汇报添加后的记录数:

我们再次看看现在数据库中的记录情况:

今日内容回向:
1 本讲的内容利用了之前哪讲的内容?
2 通过本讲的讲解,读者是否有新的思路?
本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

【分享成果,随喜正能量】读书之后做笔记,第一次要求写上万字,之后依次递减,最后把一本书缩短为几百字或者一句话,PS:最好挑名著。要学会模仿,可以多参与一些群体性表达游戏,类似狼人杀。模仿别人的表达方式,既锻炼了思维又锻炼了表达。




