通知更新记录的问题

时间:2017-08-26 21:48:27

标签: ms-access access-vba

如果有人回答我很抱歉,但我现在没有时间彻底搜索。部分是因为我是为了工作而做的。我从手机上询问所以我无法截屏等等。

我在Access 2016中建立了一个数据库,但我遇到了问题。

我有一个表单根据输入的内容更新表格,我想知道在不打开查询和滚动结果的情况下是否在表格中实际更新了任何内容。

我有一个宏设置在“更新”时运行。单击按钮,该按钮根据特定字段的值运行不同的查询。 I.E. " if field = 6,runquery update6"

我在名为RecordsChanged的VBA事物中写了一个函数,实际上只是

[ AffectedRows = CurrentDb.RecordsAffected MsgBox CStr(AffectedRows)& "记录已更改" ]

我从这里得到的: How to show how many records were updated by an update query?

要退出漫游,会显示消息框,但即使有更改记录,也会更改0记录。我在宏的末尾有一个RunCode操作,它挂在调用RecordsChanged的窗体上的按钮上。

有人可以给我建议或解释吗?

1 个答案:

答案 0 :(得分:1)

据我所知,VBA中的DAO.Database.RecordsAffected属性仅适用于DAO.Database.Execute方法运行的SQL查询。由于您无论如何都要从宏调用VBA函数,因此使用DAO.QueryDef对象并使用 RecordsAffected属性,例如,< / p>

Public Function RunMyUpdateQuery(queryName As String)
    Dim cdb As DAO.Database
    Set cdb = CurrentDb
    Dim qdf As DAO.QueryDef
    Set qdf = cdb.QueryDefs(queryName)
    qdf.Execute dbFailOnError
    Dim affected As Long
    affected = qdf.RecordsAffected
    Set qdf = Nothing
    Set cdb = Nothing
    MsgBox affected & " record(s) affected."
End Function

你的宏会做什么

RunCode  RunMyUpdateQuery("update6")