Есть ли способ экспортировать код из поврежденной базы данных? - PullRequest
1 голос
/ 22 ноября 2011

На прошлой неделе я изменял части двух модулей в базе данных Access 2010, когда программа вызывала сбой, и происходил сбой каждый раз, когда я пытался открыть базу данных после этого. Мне удалось создать новую базу данных и импортировать таблицы и запросы из поврежденной, но когда я попытался импортировать формы / макросы / модули, новая база данных также начала падать. Я держу ежедневные резервные копии, но в итоге потерял несколько часов работы. Это происходило дважды на прошлой неделе, каждый раз, когда MS Access падал без предупреждения, а VBA не восстанавливался.

Функциональность работает так, как задумано, до тех пор, пока БД не вылетит, по-видимому, в какой-то неизвестной точке. Должна быть какая-то проблема с моим кодом VBA, так как это начало происходить только тогда, когда я начал модифицировать модуль на прошлой неделе, но я не могу точно определить его, так как сбои фактически происходили, когда ничего не выполнялось. Т.е. во время сохранения.

Кто-нибудь знает, возможно ли экспортировать VBA без доступа, не экспортируя его в другую базу данных? Т.е. экспортируйте его без использования MS Access. В связанной заметке кто-нибудь создал библиотеку, которая экспортирует определения запросов, схему таблиц и все VBA в текстовые файлы, чтобы я мог перетащить их в систему контроля версий?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 22 ноября 2011

В дополнение к методу, предложенному @Remou, вы можете попробовать метод SaveAsText для сохранения модуля кода в текстовый файл.

Application.SaveAsText acModule, "Module1", "D:\Access\Module1.txt"

Однако это не удовлетворяет ваше желание сделать этобез использования Access.

Попробуйте выполнить декомпиляцию, если ваш проект содержит сохраненный скомпилированный код, который был поврежден.Вы можете найти подробные инструкции по декомпиляции в 2 ответах на этот вопрос переполнения стека: ms-access: КАК декомпилировать и перекомпилировать

После декомпиляции убедитесь, что все ваши модули включают Option Explicitв их разделах объявлений.Проверьте ссылки на проект и исправьте все, что повреждено (отсутствует).Затем запустите Debug-> Compile из главного меню редактора VB, чтобы убедиться, что ваш код компилируется без ошибок.

Эти шаги - лучшее, что я могу предложить для снижения вероятности продолжения проблем с коррупцией.

Для интеграции управления исходным кодом с Access начните с этого выбора связанных потоков переполнения стека: site:stackoverflow.com управление версиями ms-access

0 голосов
/ 15 декабря 2011

Народ

У нас та же проблема.В SP1 есть ошибка, которая вызывает это.Если вы продолжите открывать базу данных, вы, в конце концов, получите работающую резервную копию - переименуйте старую BROKEN и удалите _backup из новой базы данных, и у вас все в порядке до следующего этапа разработки.Наши ИТ-специалисты (Microsoft Gold Partners) рассматривают исправления, о которых сообщалось в http://answers.microsoft.com/en-us/office/forum/office_2010-access/access-2010-sp1-you-receive-random-crashes-in/d2bf6175-075a-4a12-a2b1-f55d40af271b

. Я могу пойти посмотреть на декомпиляцию / перекомпиляцию, однако, поскольку некоторые из наших баз данных полностью обновлены с Access 97до 2000, 2003 и теперь, поскольку формат файла mdb / 2003 все еще работает в 2010 году. Сказав это, преобразование в accdb / 2007 кажется еще хуже!

...