1

我正在访问中运行附加查询(以更改某人的登录密码),目前它检查以确保密码匹配并且他们知道原始密码。但是,我遇到了一个问题,如果更新查询: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,除了返回该查询中更新行数的值的部分。有人可以帮我吗?

提前致谢。

4

1 回答 1

1

UPDATEDAO.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
于 2013-07-10T17:47:53.310 回答