【问题标题】:VBA to show message box if update query changes 1 row, show another if none如果更新查询更改了 1 行,则 VBA 显示消息框,如果没有则显示另一个
【发布时间】:2013-07-10 17:30:30
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: vba ms-access sql-update msgbox


    【解决方案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
    

    【讨论】:

    • 我得到和预期的参数未满足错误(预期 3,在 db.Execute strUpdate, dbFailOnError 上给出 2)
    • 我添加了Debug.Print strUpdate。使用它将UPDATE 语句打印到立即窗口。转到那里 (Ctrl+g),复制语句,并将其粘贴到新 Access 查询的 SQL 视图中。当您尝试运行该查询时,Access 会通知您它认为是“缺少的参数”。
    • Private Sub LoginSubmit_Click() Dim db As DAO.Database Dim strUpdate As String strUpdate = "UPDATE Credentials" & vbCrLf & _ "SET Credentials.[Password] = [Forms]![LoginSubmit]![DesiredPassword]" & vbCrLf & _ "WHERE (((Credentials.Password)=[Forms]![LoginSubmit]![CurrentPassword]) AND ((Credentials.[User ID])=[Forms]![LoginSubmit]![User ID]));" Set db = CurrentDb db.Execute strUpdate, [dbFailOnError] MsgBox db2.RecordsAffected & " records affected" Set db = Nothing End Sub - 这是我的代码
    • 超级奇怪,我将即时窗口中的查询放入一个新查询中,它显示没有问题 - 没有任何错误。
    • 删除dbFailOnError 周围的方括号。 db2.RecordsAffected 中的 db2 是什么?
    猜你喜欢
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2017-09-28
    • 2016-12-19
    相关资源
    最近更新 更多