如果更新查询更改1行,则VBA显示消息框,如果没有则显示另一行

时间:2013-07-10 17:30:30

标签: vba ms-access sql-update msgbox

我正在处理访问中运行追加查询(更改某人的登录密码),目前它会检查以确保密码匹配并且他们知道原始密码。但是,我遇到一个问题,如果更新查询:DoCmd.RunSQL "UPDATE Credentials SET Credentials.[Password] = [Forms]![LoginSubmit]![DesiredPassword] WHERE (((Credentials.Password)=[Forms]![LoginSubmit]![CurrentPassword]) AND ((Credentials.[User ID])=[Forms]![LoginSubmit]![User ID]));"更新0行(意味着条件不满足),它会关闭(我有一个docmd.close跟随)。如果它确实更新了密码,它会做同样的事情,所以最后你在尝试新密码之前不知道它是否成功。

我想知道它什么时候更新0行所以我可以拍摄一个MsgBox告诉它它不起作用,结束sub并让它们再试一次。如果它更新了1行,我会让MsgBox说“成功”。

我知道上面的VBA,除了返回该查询中更新行数量的值的部分。有人可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

UPDATE对象变量执行DAO.Database语句。之后,您可以将用户通知基于变量的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