Многозадачность в коде Access Basic
Проблема
Если в программе VBA используется цикл, который выполняется дольше
одной-двух секунд, Access словно «замирает». Невозможно перемещать окна
на экране, а щелчки мышью в Access игнорируются до тех пор, пока
программа не выйдет из цикла. Почему это происходит? И что можно
сделать, чтобы система могла работать?
Решение
Вероятно, вы уже замечали, что простой фрагмент кода VBA способен
парализовать работу Access. Поддержка многозадачностьмногозадачности в
32-разрядных версиях Windows помогает лишь в том случае, если она
поддерживается в приложениях. Оказывается, выполнение кода Basic не
позволяет выполняться коду Access, поэтому многозадачная природа Windows
здесь не поможет. Если ваша программа содержит очень долгие циклы, вы
должны специально позаботиться о том, чтобы на время уступать управление
Windows и позволять системе выполнять свою работу. В VBA эта задача
решается при помощи команды DoEvents. При правильном использовании
команды DoEvents приложение-«монополист», подавляющее многозадачные
возможности Access, превращается в нормальное приложение, которое
позволяет Access нормально работать во время выполнения кода VBA.