【发布时间】:2015-07-03 15:04:54
【问题描述】:
我想将我的数据库性能保持在最高水平,减少对象数量并临时创建内容。我有一张应该从代码中自动生成的表格:
有一个报告需要该表中的数据 - (工作正常),所以这是流程:
'-> 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”:数据库引擎无法锁定表 'temp-table' 因为它已经被另一个人使用了,或者 过程。
我相信这是因为报告可能正在使用它。所以我在我的代码中添加了十秒的延迟:
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 中,创建和删除表会导致大量膨胀。你没有办法吗?即使清空桌子也更好。
-
必须在报表关闭时删除表格或丢弃其内容吗?如果这不是绝对要求,您可以在工作流程中的“日期表已填充” 步骤之前立即处理表(
DROP或DELETE)。 -
我已经检查了我的创建表功能。它检查表是否存在并删除它。我想删除内容,所以我的数据库没有这个表 24/7。我想要它在特定时间@HansUp
-
如果报表的“记录源”属性中使用了该表,Access 将不允许您在报表打开时删除该表。
-
@HansUp 我想我会清空桌子。
标签: ms-access vba ms-access-2003