Как обновить временные таблицы перед открытием формы?

У меня есть форма MFForm которая опирается на временную таблицу MFTable. Я хочу обновить содержимое этой таблицы всякий раз, когда открывается форма.

Для этого я использую следующий код VBA в MFForm:

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.

Я думаю, проблема в том, что, как только я нажимаю на форму для ее запуска, таблица temp используется, даже до выполнения функции Form_Open(). Как я могу убедиться, что содержимое таблицы обновляется всякий раз, когда открывается форма?

1 ответ

Здесь я предполагаю, что ваша схема таблицы не меняется постоянно и очищает таблицу, а не отбрасывает ее.

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

Если ваша схема постоянно меняется, вам нужно будет выполнить этот код перед открытием формы. Я не тестировал это, но вы можете сделать свою форму подформой другой формы и удалить эту другую форму и воссоздать таблицу перед открытием подформы.

licensed under cc by-sa 3.0 with attribution.