我的表单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()
函数之前也会使用。如何在表单打开时确保刷新表的内容?
答案 0 :(得分:1)
这里我假设你的表的模式不是经常变化,而是清除表而不是丢弃它。
CurrentDb.Execute "delete * from MFTable", dbFailOnError
CurrentDb.Execute "insert into MFTable select * from MFQuery", dbFailOnError
Me.Requery
如果您的架构不断变化,那么您需要在打开表单之前执行该代码。我没有对此进行过测试,但您可以将表单设置为另一个表单的子表单,并在子表单打开之前删除其他表单并重新创建表。