Access ADP Corupt не будет компилироваться - PullRequest
0 голосов
/ 07 апреля 2009

У меня есть Access ADP Project, который был непрерывным проектом в течение последних 6 лет, поэтому он имеет сотни форм и тысяч строк кода VBA. После недавнего обновления он не будет компилироваться для создания файла ADE. Он говорит мне, что одно из текстовых полей не существует, но оно существует. Я удалил файл for и снова импортировал его из рабочей резервной копии, но ошибка все та же. Я попытался импортировать весь проект в новый файл ADP и все еще не буду компилировать, пробовал сжимать и восстанавливать, а также / декомпилировать

Есть ли у кого-нибудь какие-либо хитрости или программные пакеты, помогающие решить эту проблему?

Ответы [ 4 ]

2 голосов
/ 08 апреля 2009

Я не работаю с ADP, но в MDB существуют различия между этими двумя синтаксисами для ссылки на элементы управления в форме:

  Me.MyControl
  Me!MyControl

Первая заставляет Access создать скрытое свойство, которое возвращает элемент управления. Результатом этого является проверка ссылок на элементы управления во время компиляции.

Второй использует коллекцию по умолчанию текущей формы и не обеспечивает проверку во время компиляции.

Я предполагаю, что VBA работает в ADP так же, как и в MDB, так почему бы не попробовать преобразовать неправильные ссылки на элементы управления в bang вместо точки? Это исключило бы проверку во время компиляции и могло бы позволить проекту компилироваться без необходимости его трудоемкой реконструкции.

Если это сработает, я думаю, что тогда я попытаюсь удалить элемент управления (чтобы удалить скрытое определение свойства) и добавить обратно элемент управления с новым именем, а затем сжать (не знаю, можно ли декомпилировать ADP, но если они могут, это также должно быть декомпилировано). Теоретически, это должно навсегда удалить проблемное определение скрытого свойства, и если это является причиной проблемы, вы сможете вернуться к оператору точки и получить обратную проверку во время компиляции.

Что бы это ни стоило, я видел слишком много проблем с коррупцией с оператором точки и всегда использовал взрыв во всех моих проектах. У меня все в порядке с отсутствием проверки контрольных ссылок во время компиляции.

И, о, кстати, с ударом вы теряете автоматический Intellisense (что в некоторых случаях является благословением, поскольку Intellisense может мешать вам в некоторых контекстах), но вы можете вызвать другой список Intellisense с помощью CTRL-SPACE. Этот список не ограничен типом элемента управления, но как только вы начнете печатать, вы получите обычное автозаполнение, которое приведет вас к соответствующему месту в списке.

1 голос
/ 07 апреля 2009

Иногда помогает запустить новый пустой проект, а затем импортировать все формы / отчеты / модули из старого.

0 голосов
/ 06 сентября 2011

Иногда я обнаруживал, что мне нужно вручную нажать Debug -> Compile перед созданием файлов ADE.

Следующие шаги могут помочь при невозможности компиляции файла ADP:

  1. Отладка -> Компиляция
  2. Компактный / ремонт
  3. тогда сделайте ADE
0 голосов
/ 08 апреля 2009

Если подход Биргера не сработает, рассмотрите возможность сохранения каждого модуля с помощью метода SaveAsText. Затем, как предположил Биргер, импортируйте, но ТОЛЬКО формы и таблицы. Затем заново создайте модули, используя метод LoadFromText.

...