暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库的DELETE+ADDNEW

VBA语言专家 2021-12-28
404

【分享成果,随喜正能量】无关紧要时,不想说就别逼自己说。一定要说时,想清楚你的观点,你想做什么,说话对象是谁,场合是否适宜说。尽量慢点说,不要着急,把要说的事情分清主次,开始的时候尽量只是阐述事实,少加入个人观点,慢慢好了再加入观点,同时也多听听别人怎么说的。

《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:最好挑名著。要学会模仿,可以多参与一些群体性表达游戏,类似狼人杀。模仿别人的表达方式,既锻炼了思维又锻炼了表达。




文章转载自VBA语言专家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论