accde run используя runtime останавливает выполнение любого кода - PullRequest
0 голосов
/ 03 ноября 2011

Я обновил старую базу данных Access 2003 до Access 2010. Исходная база данных была разделена с фронтом доступа (установленным для клиентов) и бэкэндом (находящимся на сервере). Новая база данных использует доступ для внешнего интерфейса, но внутренняя часть была перемещена на сервер SQL.

Как только это было закончено, я создал файл accde и упаковал его в установщик, чтобы распространить его среди всех клиентских компьютеров. Программа установки создает ярлык на рабочем столе, который запускает Access 2010 в режиме выполнения и запускает базу данных интерфейса.

Я тестировал его локально, и на моем ПК для разработки все в порядке. Но на тестовом клиентском ПК (с установленным Office 2010) выдается ошибка при открытии базы данных, которая останавливает выполнение всего кода. Это, очевидно, довольно серьезная ошибка, которая не позволяет никому пользоваться базой данных.

Ошибка

The expression On Current you entered has the event property setting produced the following error
The expression may not result in the name of a macro, the name of a user defiend function, or event procedure.

Я убедился, что база данных находится в надежном месте, и попробовал ее со всеми включенными макросами, но все равно получаю ту же ошибку. Перед созданием accde я также убедился, что весь код компилируется.

Я вручную скопировал файл accde на чистый тестовый компьютер, чтобы проверить, была ли это проблема с установщиком, и даже открытие accde в полном доступе (т.е. без использования флага / runtime) выдает ту же ошибку. Если я скопирую файл accdb на клиентский компьютер, он будет работать нормально, но очевидно, что распространение accdb не является безопасным способом работы базы данных.

Я также пытался создать пустую базу данных доступа 2010 и импортировать все объекты из обновленной версии (которая была файлом mdb, преобразованным в accdb), чтобы проверить, не является ли проблема способом доступа, преобразованным исходной базой данных mdb. - все та же ошибка.

Кто-нибудь сталкивался с этой ошибкой прежде, чем / может пролить свет на это для меня, я хорошо и по-настоящему озадачен.

РЕДАКТИРОВАТЬ: После игры на тестовом клиентском ПК я заметил, что если я открою файл accdb, а затем сохраню его как акк, перезаписав установленную версию, то он будет работать нормально. но это, очевидно, добавляет огромные накладные расходы на установку для всех клиентов и устраняет возможность ее автоматизации. поэтому само по себе оно не является жизнеспособным решением ... надеюсь, оно направит кого-то в правильном направлении.

EDIT2: я также проверил и подтвердил, что все ссылки не повреждены, т.е. dll / ocx / etc и присутствуют на тестовом клиентском компьютере

1 Ответ

1 голос
/ 06 ноября 2011

Это звучит как типичная проблема с неработающими ссылками.

Я бы гарантировал, что ссылки VBA находятся на абсолютном минимуме здесь. (на своем компьютере разработчика создайте пустой файл accDB, а затем в редакторе VBA посмотрите ссылки по умолчанию - это то, что вам нужно для вашего рабочего accDB, который вы затем скомпилируете в accDE).

Я бы также рассмотрел возможность декомпиляции вашего accDB ПРЕЖДЕ ЧЕМ вы компилируете код в accDE.

Также обновление Office SP1 вызывает проблемы с повреждением VBA. Если с вашими ссылками все в порядке (И вы используете позднюю привязку для какой-либо автоматизации word / outlook и т. Д.), То я рассмотрю вопрос после установки SP1, а также установлю исправление VBA для saccess 2010. Так что попробуйте это с обоими sp1 + исправлением кода .

Исправление VBA здесь: http://support.microsoft.com/kb/2596585

Вышеупомянутое довольно ново - начиная с 25 октября, но вы хотите убедиться, что сначала вы проверили / протестировали другие шаги, иначе вы будете в погоне за диким гусем, который может вызвать у вас больше горя здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...