Как избавиться от ms-доступа «Призрачные модули» - PullRequest
0 голосов
/ 19 сентября 2019

Мы получили базу данных ms-access, которую мы используем в качестве фреймворка.

Поэтому мы используем функцию, которую мы называем «Обновление фреймворка», где мы переносим некоторые модули из фреймворка в целевую базу данных с этим кодом

db_fw.DoCmd.DeleteObject xxx_obj_t, rec_ref!REFR_NAME
...
db_fw.DoCmd.TransferDatabase acImport, "Microsoft Access", dCopiedFrameworkFile, xxx_obj_t, rec_ref!REFR_NAME, rec_ref!REFR_NAME

Это прекрасно работает примерно в 99% случаев.

Но с некоторого времени я обнаружил, что иногда - очень редко - вместо замены модуля ms-access создает модуль сто же имя, но номер в конце.

Например, модуль "ICanAfterStart" больше не отображается.Вместо этого отображается модуль "ICanAfterStart1".Весь код работает как прежде.Таким образом, «реализует ICanAfterStart» по-прежнему компилируется и, кажется, работает.

Когда я снова обновляю инфраструктуру, создается модуль с именем: «ICanAfterStart2» (и т. Д.).

До сих пор этопроизошло только с интерфейсными модулями, которые мы всегда называем «I» в начале.

Я уже пробовал:

  • декомпилировать базу данных

  • сжатие и восстановление базы данных

  • Application.SaveAsText;удалите все видимые модули «ICanAfterStart *» и попробуйте использовать Application.LoadFromText для повторного импорта модуля.Но Application.LoadFromText приводит к «ошибке времени выполнения 2950: зарезервированная ошибка»

  • Я создал новый модуль под названием «ICanAfterStart», куда я скопировал код в виде текста.Но после следующего обновления инфраструктуры «ICanAfterStart» больше не отображается, а «ICanAfterStart1» уже есть.

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

Итак, кто-нибудь знает, в чем проблема, и получил для меня более практичное решение?

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