如果有人回答我很抱歉,但我现在没有时间彻底搜索。部分是因为我是为了工作而做的。我从手机上询问所以我无法截屏等等。
我在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的窗体上的按钮上。
有人可以给我建议或解释吗?
答案 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")