2013-04-26 83 views
2

時發生訪問錯誤時出現「無法壓縮打開的數據庫」提交記錄到我的數據庫時,我剛開始收到一個奇怪的錯誤。這是一個數據輸入表格,稱爲一堆代碼,然後在末尾調用在提交表單

docmd.runcommand acSaveRecord 
    Application.quit 

。我將行docmd.save更改爲docmd.runcommand acSaveRecord,因爲記錄有時不被保存。我沒有將應用程序設置爲緊湊和修復。爲什麼我會收到此消息?

完整的錯誤是You cannot compact the open database through vba or a macro

+0

作爲一個遠投的猜測,確實有'Me.Dirty = FALSE'更換'DoCmd.RunCommand acSaveRecord'有什麼區別? – HansUp 2013-04-26 22:44:18

+0

@Hansup是的,這是我做的第一件事情之一。我仍然想知道是什麼原因導致了這個錯誤,而且我似乎在其他地方找到了它。 – Scotch 2013-04-27 01:45:11

回答

5

這裏是我發現

acSaveRecord是Access.Constants的成員,等於4

acCmdSaveRecord是Access.AcCommands的一員,等於50.

本質上,我使用的命令是"DoCmd.RunCommand 4"

Access.AcCommands的值,該值等於4是acCmdCompactDatabase

因此,應該使用docmd.runcommand accmdSaveRecord(或使用form.dirtyThis blog post簡要解釋了爲什麼應該使用form.dirty

古怪 - 源怪異的行爲是帖子的最後here