Я бы поработал над сутью проблемы - настройте запросы на обновление данных, чтобы они выполнялись быстрее.
При этом MS Access не поддерживает многопоточность.
Итак, когда вы выполняете блокирующий вызов процедуры, MS Access замораживает экран до тех пор, пока вызов не вернется.
править
DAO на самом деле не ваш лучший друг, если вы обновляете большую таблицу через медленное сетевое соединение. Возможно, вы захотите рассмотреть возможность перехода на использование соединения ODBC и выполнения оптимизированного оператора обновления .
edit 2
когда вы используете ODBC, вы должны написать код стиля ADO, чтобы это работало. Обратите внимание, что в этом примере это код OTTOMH.
dim myConn as ADODB.Connection
dim myCmd as ADODB.Command
set myConn = new ADODB.Connection
myConn.ConnectionString = "Provider=SQLOLEDB;Server=MyServerName;Initial Catalog=MyCatalogName;UID='XXX';PWD='YYY'"
myConn.Open
set myCmd = new ADODB.Command (myConn)
myCmd.SQL = "Update MyTable Set MyColumn = '" & MyDataVariable & "' Where MyPK = '" & MyPKVariable & "'"
myCmd.Execute
myCmd.close
myConn.close
Использование docmd.hourglass true перед оператором обновления и docmd.hourglass false после, чтобы вернуть куратора. Также не забудьте указать docmd.hourglass false в своей программе обработки ошибок.
Не самое модное решение, но оно может помочь с уровнем ожиданий пользователей.
Требуется ли клиенту подтверждение обновления информации? В противном случае вы можете открыть процедуру оболочки, которая обрабатывает обновление за вас. т.е.
Shell ("'C: \ Reports \ SomeOtherAccessDB.MDB' / x 'SomeMacro'", 1)
По умолчанию это асинхронно, поэтому пользователь увидит только второй .mdb на панели задач. в течение нескольких секунд, необходимых для запуска.
О, и Престижность за то, что вы действительно заботитесь о времени вашего пользователя!