Мы получили базу данных 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» уже есть.
В качестве «решения» на данный момент я пробую файлы резервных копий, пока не найду тот, который делаетнет этой ошибки.Так как это большая работа, и мне нужно воссоздать весь код, который я написал до этого, это плохое решение.
Итак, кто-нибудь знает, в чем проблема, и получил для меня более практичное решение?