2013-07-10 24 views
1

我正在运行追加查询(更改someones登录密码)的访问,目前它检查,以确保密码匹配,他们知道原始密码。然而,我遇到了一个问题,如果更新查询: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以下)。如果它确实更新了密码,它的确如此,所以最终你不知道它是否成功,直到你尝试新的密码。如果更新查询更改显示消息框的VBA 1行,显示另一个如果没有

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

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

在此先感谢。

回答

1

执行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 
+0

我得到验证,预计参数不能满足误差(预计3,在'db.Execute strUpdate,dbFailOnError'给予2) – Dm3k1

+0

我加入'Debug.Print strUpdate'。使用它来将'UPDATE'语句打印到立即窗口。去那里(Ctrl + g),复制语句,并将其粘贴到新的Access查询的SQL视图中。当您尝试运行该查询时,Access会通知您它认为是“缺少的参数”。 – HansUp

+0

'私人小组LoginSubmit_Click() 昏暗分贝作为DAO.DATABASE 昏暗strUpdate作为字符串 strUpdate = “UPDATE凭证” &vbCrLf&_ “组凭证。[密码] = [表格]![LoginSubmit]![DesiredPassword] (((Credentials.Password)= [Forms]![LoginSubmit]![CurrentPassword])AND((Credentials。[User ID])= [Forms]![LoginSubmit]![User ID ]));” 设置DB = CurrentDb db.Execute strUpdate,[dbFailOnError] MSGBOX db2.RecordsAffected与 “受影响的记录” 集DB =无 结束Sub' - 这是我的代码 – Dm3k1

相关问题