VBA在更新查询更改1行时显示消息框,在无更改时显示另一行

VBA在更新查询更改1行时显示消息框,在无更改时显示另一行,vba,ms-access,sql-update,msgbox,Vba,Ms Access,Sql Update,Msgbox,我正在access中运行一个追加查询(更改某人的登录密码),目前它会检查以确保密码匹配,并且他们知道原始密码。但是,我遇到了一个问题,如果更新查询:DoCmd.RunSQL“更新凭据集凭据。[密码]=[Forms]![LoginSubmit]![DesiredPassword]其中(((凭据.密码)=[Forms]![LoginSubmit]![CurrentPassword])和((凭据。[用户ID])=[Forms]![LoginSubmit]![User ID]);“更新0行(意味着不满足

我正在access中运行一个追加查询(更改某人的登录密码),目前它会检查以确保密码匹配,并且他们知道原始密码。但是,我遇到了一个问题,如果更新查询:
DoCmd.RunSQL“更新凭据集凭据。[密码]=[Forms]![LoginSubmit]![DesiredPassword]其中(((凭据.密码)=[Forms]![LoginSubmit]![CurrentPassword])和((凭据。[用户ID])=[Forms]![LoginSubmit]![User ID]);“
更新0行(意味着不满足条件)它关闭(我有一个
docmd.close
如下)。如果它确实更新了他们的密码,它也会这样做,因此,在你尝试新密码之前,最后你不知道它是否成功

我想知道它何时更新0行,这样我就可以弹出一个MsgBox告诉他们它不工作,结束sub并让他们重试。如果它更新1行,我会让MsgBox说“成功”

我知道上面的VBA,除了返回查询中更新行数值的部分。有人能帮我吗


提前感谢。

DAO.Database
对象变量执行
UPDATE
语句。之后,您可以根据变量的
RecordsAffected
属性通知用户

下面是一个简单的示例,已通过Access 2007验证

Dim db As DAO.Database
Dim strUpdate As String
strUpdate = "UPDATE tblFoo" & vbCrLf & _
    "SET some_text = 'bar'" & vbCrLf & _
    "WHERE id = 7;"
Debug.Print strUpdate
Set db = CurrentDb
db.Execute strUpdate, dbFailOnError
MsgBox db.RecordsAffected & " records affected"
Set db = Nothing

DAO.Database
对象变量执行
UPDATE
语句。之后,您可以根据变量的
RecordsAffected
属性通知用户

下面是一个简单的示例,已通过Access 2007验证

Dim db As DAO.Database
Dim strUpdate As String
strUpdate = "UPDATE tblFoo" & vbCrLf & _
    "SET some_text = 'bar'" & vbCrLf & _
    "WHERE id = 7;"
Debug.Print strUpdate
Set db = CurrentDb
db.Execute strUpdate, dbFailOnError
MsgBox db.RecordsAffected & " records affected"
Set db = Nothing

我正在获取和预期参数未满足错误(预期3,在
db.Execute strUpdate上给定2,dbFailOnError
)我添加了
Debug.Print strUpdate
。使用它将
UPDATE
语句打印到即时窗口。转到那里(Ctrl+g),复制该语句,并将其粘贴到新Access查询的SQL视图中。当您尝试运行该查询时,Access将通知您它认为“缺少参数”的内容。
Private Sub-loginsupmit\u Click()Dim db As DAO.Database Dim strUpdate As String strUpdate=“UPDATE Credentials”&vbCrLf&“SET Credentials.[Password]=[Forms]![LoginSubmit]![DesiredPassword]“&vbCrLf&uu其中(((凭据.密码)=[Forms]![LoginSubmit]![CurrentPassword])和((凭据。[用户ID])=[Forms]![LoginSubmit]![User ID]);“Set db=CurrentDb db.Execute strUpdate,[DbFailOneError]MsgBox db2.RecordsAffected&“受影响的记录”设置db=Nothing End Sub
-这是我的代码超级奇怪,我将即时窗口中的查询放入一个新的查询中,它显示没有问题-没有错误-没有任何错误。删除围绕
dbFailOnError
的方括号。
db2中的
db2
是什么。RecordsAffected
?我正在获取和预期的参数未满足错误(预期3,在
db.Execute strUpdate,dbFailOnError
上给定2)我添加了
Debug.Print strUpdate
。使用它将
UPDATE
语句打印到即时窗口。转到那里(Ctrl+g),复制该语句,并将其粘贴到新Access查询的SQL视图中。当您尝试运行该查询时,Access将通知您它认为“缺少参数”的内容。
Private Sub-loginsupmit\u Click()Dim db As DAO.Database Dim strUpdate As String strUpdate=“UPDATE Credentials”&vbCrLf&“SET Credentials.[Password]=[Forms]![LoginSubmit]![DesiredPassword]“&vbCrLf&uu其中(((凭据.密码)=[Forms]![LoginSubmit]![CurrentPassword])和((凭据。[用户ID])=[Forms]![LoginSubmit]![User ID]);“Set db=CurrentDb db.Execute strUpdate,[DbFailOneError]MsgBox db2.RecordsAffected&“受影响的记录”设置db=Nothing End Sub
-这是我的代码超级奇怪,我将即时窗口中的查询放入一个新的查询,它显示没有问题-没有错误-没有任何错误。删除围绕
dbFailOnError
的方括号。在
db2中
db2
是什么。RecordsAffected