1
我想讓我的數據庫性能保持在最高水平,減少對象的數量並暫時創建東西。我應該從代碼自動完成的表格:刪除一個關於報表關閉並稍有延遲的表格
有從該表需要數據的報表 - (正常工作),所以這是流程:
'-> form is opened -> onClick find-button
'-> table of dates is created -> table of dates is populated
'-> Report is opened -> onReportClose (I want the table of dates to be deleted).
的代碼編寫,它可以正常工作:
CurrentDb.TableDefs.Refresh
DoCmd.DeleteObject acTable, "temp-table"
所以我在報告中增加了一個宏,用於運行上面的代碼:這是一個函數。但我得到的錯誤如下:
運行時錯誤「3211」:數據庫引擎無法鎖定表 「臨時表」,因爲它已經被其他人或 過程中使用。
我相信這是因爲報告可能使用它。所以我加了個十幾秒延遲到我的代碼:
Dim PauseTime As Variant
Dim Start As Variant
Dim Elapsed As Variant
PauseTime = 10
Start = Timer
Elapsed = 0
Do While Timer < Start + PauseTime
Elapsed = Elapsed + 1
Loop
CurrentDb.TableDefs.Refresh
DoCmd.DeleteObject acTable, "temp-table"
相反,這似乎是抱着整個數據庫10秒,同樣的問題仍然出現。任何有關如何刪除關閉報表的表格或建議,或強制刪除Ms-Access(或許?)或如何解決此問題的建議。
在MS Access中,創建和刪除表格會導致大量的膨脹。你沒有辦法?即使倒空桌子也更好。 – Fionnuala
您必須在報告結束時放棄表格或丟棄其內容嗎?如果這不是絕對的要求,那麼您可以在工作流中的*「日期表填充」之前立即處理表(「DROP」或「DELETE」)。 – HansUp
我已經在我的創建表函數中進行了檢查。它檢查表是否存在並丟棄它。我想刪除內容,所以我的數據庫沒有24/7這張表。我在特定時間需要它@HansUp –