略有延迟地在报告关闭时删除 table

Delete a table on report close with slight delay

我想将我的数据库性能保持在最高水平,减少对象数量并临时创建内容。我有一个 table 应该从代码自动化:

有一份报告需要来自 table 的数据 -(工作正常),所以这是流程:

'-> 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"

所以我在靠近 运行 上述代码的报告上添加了一个宏:这是一个函数。但我收到以下错误:

Run-time error '3211': The database engine could not lock table 'temp-table' because it is already in use by another person or process.

我相信这是因为报告可能正在使用它。所以我在我的代码中添加了十秒的延迟:

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 秒,但同样的问题仍然存在。欢迎任何 Ideas/suggestions 如何在报告关闭时删除此 table,或在 Ms-Access 中强制 table 删除(也许?)或如何解决此问题。

您必须清除 RecordSource 的 RecordSource,并且 运行 Unload 事件中的 Requery 方法。之后您可以删除数据 table.

Private Sub Report_Unload(Cancel As Integer)

  'Desvinculo la tabla del reporte
  Me.RecordSource = ""
  Me.Requery

  'Borro las tablas de datos
  DoCmd.RunSQL "DROP TABLE name_of_table"

End Sub