我刚刚在向数据库提交记录时收到了一个奇怪的错误。它是一个数据输入表单,调用一堆代码,然后调用
docmd.runcommand acSaveRecord
Application.quit
最后。我将行docmd.save
更改为docmd.runcommand acSaveRecord
,因为有时没有保存记录。我没有将应用程序设置为紧凑并在关闭时进行修复。为什么我收到此消息?
完整错误为You cannot compact the open database through vba or a macro
答案 0 :(得分:5)
以下是我发现的内容
acSaveRecord
是Access.Constants的成员,等于4。
acCmdSaveRecord
是Access.AcCommands的成员,等于50。
基本上,我使用的命令是"DoCmd.RunCommand 4"
。
Access.AcCommands
中等于4的值为acCmdCompactDatabase
因此,应该使用docmd.runcommand accmdSaveRecord
(或使用form.dirty
)
This blog post简要解释了为什么应该使用form.dirty
。
奇怪 - 怪异行为的来源是最后一篇here