VBA在更新查询更改1行时显示消息框,在无更改时显示另一行
我正在access中运行一个追加查询(更改某人的登录密码),目前它会检查以确保密码匹配,并且他们知道原始密码。但是,我遇到了一个问题,如果更新查询: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行(意味着不满足
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
?