2017-01-11 8 views
0

У меня есть проект MS Access, который был разработан в MS Access 97. Я успешно преобразовал его в MS Access 2016 (это была длинная история). Все выглядит прекрасно, но я заметил очень странное поведение.Форма MS Access распадается после включения небезопасного содержимого

Когда пользователь впервые открывает файл проекта в режиме клиента, появляется много макросов. Это обычная вещь, потому что пользователь еще не разрешил небезопасный контент в этом файле. Таким образом, после того, как пользователь закрыл все ошибки, он нажимает кнопку «Разрешить небезопасный контент» и закрывает файл. Теперь пользователь снова открывает проект, и он работает неправильно. Вызывается несколько форм, которые не должны вызываться и появляется сообщение «Module not found». Я не разработал никаких модулей для этой программы. Таким образом, это означает, что если пользователь сначала откроет файл, не допуская небезопасного контента, проект полностью перепутается, и его невозможно восстановить, если вы не замените файл новой копией.

Однако, если пользователь имеет новую копию файла проекта .accdb, и файл находится в надежном месте, все работает нормально. Другой способ заставить проект работать правильно, не помещая его в доверенное местоположение, - это открыть его, удерживая сначала клавишу переключения и нажав кнопку «Разрешить небезопасный контент». Тогда пользователь может нормально запускать файл с двойным щелчком, и он работает так, как должен.

Итак, открытие этого файла без разрешения небезопасного контента сначала разрывает проект. Я также попытался открыть код VBA формы, который вызывается по умолчанию, а окна кода VBA выглядят замороженными. Другие формы работают нормально. enter image description here

Как я могу отладить эту проблему?

UPD: На самом деле проблема связана с попыткой запуска макросов, в то время как небезопасный контент не включен.

UPD: Я заметил еще одну вещь - если я запускаю проект, не разрешая сначала небезопасное содержимое, но я не нажимаю «разрешать контент» и просто закрываю программу - я все еще могу запустить ее из надежного местоположения. Таким образом, коррупция происходит только после нажатия кнопки «включить контент». В моей форме есть макрос с прикрепленным действием OnClose. Но я попытался удалить все макросы из этой формы, и это не помогло.

+0

Вы делаете несколько ложных предположений. Прежде всего, у вашей базы данных есть модули. Когда создается одно событие в одной форме, создается модуль для этой формы. Во-вторых, и самое главное, вы серьезно относитесь к словам «небезопасный контент». Для MS Access каждый бит кода VBA является «небезопасным». Это предназначено для защиты от открытия случайного файла, загруженного из Интернета или полученного по электронной почте. Для файла, который был разработан в доме, он не только безопасен, но и очень важно, чтобы VBA запускался беспрепятственно. – SunKnight0

+0

@ SunKnight0 Я не имел в виду, что у моей базы данных нет модулей. Я имел в виду, что у меня не было такого. И вы правы, нет ничего плохого в том, чтобы позволить Access запускать небезопасный код в этом файле, и я понимаю, что означает «небезопасный». Бывают случаи, когда новые пользователи на своей новой установленной Windows дважды щелкают файл .accdb, не допуская сначала небезопасного контента, и это ломает мою программу. В этом случае мне придется предоставить им новую копию проекта. Это проблема для меня. – fakemeta

+0

@ SunKnight0 Чтобы быть более понятным - обычно, когда пользователь запускает новый файл .accdb с макросами, во время запуска появляются ошибки (информация о небезопасных действиях в макросах и т. Д.) И появляется кнопка «Включить контент». Когда пользователь нажимает кнопку, программа перезапускается без каких-либо макросов и работает нормально.Но в моем случае программа перезагружается с повреждением, и я не могу вернуть эти повреждения. – fakemeta

ответ

0

Я столкнулся с некоторыми более странными проблемами, и, хотя их отладка обнаружила, что в системе есть некоторые следы MS Office 2000. Я решил удалить MS Office, очистить реестр Windows и снова установить MS Office. Это решило все мои проблемы.

Смежные вопросы