如何在表单打开之前更新临时表?

时间:2014-04-30 18:57:34

标签: ms-access ms-access-2010

我的表单MFForm依赖于临时表MFTable。我想在窗体打开时刷新该表的内容。

为此,我在MFForm中使用以下VBA代码:

Private Sub Form_Open(Cancel As Integer)

CurrentDb.execute "drop table MFTable", dbFailOnError
CurrentDb.execute "select * into MFTable from MFQuery", dbFailOnError

End Sub

但是当我双击表单将其打开时,我在drop table命令上收到以下错误:

Run-time error '32111:

The database engine could not lock table 'MFTable'
because it is already in use by another person or process.

我认为问题在于,只要我单击表单运行它,临时表即使在执行Form_Open()函数之前也会使用。如何在表单打开时确保刷新表的内容?

1 个答案:

答案 0 :(得分:1)

这里我假设你的表的模式不是经常变化,而是清除表而不是丢弃它。

CurrentDb.Execute "delete * from MFTable", dbFailOnError
CurrentDb.Execute "insert into MFTable select * from MFQuery", dbFailOnError
Me.Requery

如果您的架构不断变化,那么您需要在打开表单之前执行该代码。我没有对此进行过测试,但您可以将表单设置为另一个表单的子表单,并在子表单打开之前删除其他表单并重新创建表。