如何在VBA代码中添加If判断语句,避免已完成状态的记录重复更新
Access VBA按钮点击逻辑修改方案
实现逻辑
- 先统计符合筛选条件(Analyst等于当前系统用户名、Status不等于Completed)的待更新记录数
- 待更新记录数大于0时执行UPDATE更新语句,弹出更新成功提示
- 待更新记录数等于0时直接弹出无记录可更新提示
完整修改后代码
Private Sub complete_Click() Dim recordCount As Long Dim currUser As String ' 获取当前系统用户名 currUser = Environ("Username") ' 统计待更新的记录数量 recordCount = DCount("*", "Upload_Report", "Analyst = '" & currUser & "' AND Status <> 'Completed'") If recordCount > 0 Then ' 关闭系统默认的更新确认弹窗,避免重复提示 DoCmd.SetWarnings False ' 执行更新语句 DoCmd.RunSQL "UPDATE Upload_Report SET Status = 'Completed' WHERE Analyst = '" & currUser & "'" DoCmd.SetWarnings True MsgBox "Records are updated", vbInformation Else MsgBox "No records to get updated", vbInformation End If End Sub
补充说明
原代码存在2处语法问题已同步修复:
- 原代码中
Environ(Username)缺少字符串引号,会导致无法正常获取系统用户名,修正为Environ("Username")- 原代码直接调用
DoCmd.RunSQL会弹出系统自带的更新确认提示,新增SetWarnings开关避免重复弹窗干扰
内容的提问来源于stack exchange,提问作者Dhakshna Moorthy
相关产品推荐
相关产品推荐

