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