Access 2002

Из-за чего декомпилируется код


Декомпиляция — это бич программистов. Так называют переход кода из откомпилированного в неоткомпилированное состояние. Компиляция кода требует времени, и она обязательно должна быть выполнена между изменением кода и его выполнением. Если вы сохранили код в откомпилированном состоянии, то, конечно же, не хотите, чтобы во время выполнения приложения он компилировался снова. Поэтому вам нужно знать, когда и почему код декомпилируется.

Access отмечает модуль VBA как декомпилированный каждый раз, когда вы сохраняете изменения объекта, связанного с этим кодом: формы, отчета, элемента управления или модуля. Если вы модифицируете форму (или отчет) или ее элементы, модифицируете код в глобальном модуле или модуле класса, удаляете или переименовываете любой из этих объектов, Access сообщает VBA, что объект нуждается в повторной компиляции. Если же вы вносите изменение, но не сохраняете его, объект остается в откомпилированном состоянии.

Если вы изменяете объект или его код, VBA должен откомпилировать не только его, но и те модули и объекты, которые на него ссылаются. Это значит, что компиляция идет по иерархии ссылок вверх, а не вниз. Если модуль А вызывает модуль В и вы что-то изменяете в модуле В, модуль А декомпилируется. Однако если вы изменяете что-то в модуле А, модуль В остается в откомпилированном состоянии (если, конечно, нигде в модуле В нет обращения к модулю А).

VBA сохраняет имя проекта (имя проекта VBA, отличающееся от имени базы данных) как часть информации о его состоянии. Сразу после создания базы данных Access присваивает ей то же имя, что и проекту VBA. Если позже вы измените имя проекта полностью откомпилированного приложения, Access декомпилирует проект VBA, и при следующем запуске приложения он будет откомпилирован повторно.

Комментарии закрыты