Компиляция Access 2007 Accdb в Accde - PullRequest
0 голосов
/ 19 августа 2009

Я пытаюсь использовать встроенную функциональность Make ACCDE в доступе для создания автономного приложения, которое взаимодействует с серверной частью SQL-Server 2008. Когда я запускаю Make ACCDE, я получаю сообщение об ошибке, в котором говорится, что используется слишком много ссылок на TableID (заявлено, что ограничение составляет около 2048).

Методом проб и ошибок (удаление форм до их компиляции) я обнаружил, какая форма вызывает проблемы. Кажется, компилируется, если я удаляю весь код VBA из формы.

Мне было интересно, сталкивался ли кто-нибудь с этой проблемой раньше и есть ли какая-то конкретная проблема, которая ее вызывает? Я сталкивался с этой проблемой несколько раз, и мне очень больно просматривать код, удаляя половину кода, чтобы найти источник ошибки.

Ответы [ 2 ]

3 голосов
/ 20 августа 2009

Для будущего кодирования вы должны убедиться, что вы следуете хорошим правилам кодирования:

  1. в опциях VBE, выключите COMPILE ON DEMAND и убедитесь, что включена опция REQUIRE VARIABLE DECLARATION (это приведет к созданию новых модулей с OPTION EXPLICIT по умолчанию).

  2. добавьте кнопку компиляции на панель инструментов в VBE, чтобы она была легко доступна. При кодировании нажимайте кнопку компиляции после каждых нескольких строк кода (и SAVE после каждой компиляции). Это не позволит вам написать слишком много некомпилируемых строк кода, поэтому будет проще исправить их так, чтобы они были компилируемыми.

  3. регулярно создавайте резервную копию базы данных, декомпилируйте и перекомпилируйте ее. Это очистит любой код, накопленный в скомпилированном p-коде (декомпиляция удаляет весь скомпилированный p-код и оставит только текст канонического кода), и может стереть ошибки компиляции, которые ранее были скрыты поврежденным p-кодом.

Следуя этим рекомендациям, вы вряд ли когда-либо столкнетесь с повреждением кода.

0 голосов
/ 19 августа 2009

Я иногда видел подобные ошибки. Я бы предложил импортировать все ваши объекты в новый ACCDB. Сжатие и восстановление только очищает таблицы и индексы и практически ничего не делает для диагностики или устранения повреждений для других объектов.

Если вы изолировали его от одной конкретной формы, попробуйте сделать копию и вставить в форму. Этого должно быть достаточно, чтобы Access сохранил чистую копию формы.

В следующий раз, когда вы столкнетесь с этим, вы могли бы записать точное сообщение об ошибке, включая номер, и написать мне на Тони на granite.ab.ca. Я хотел бы добавить это в свой список таких ошибок для моей веб-страницы с повреждениями, так как это, похоже, специфическое сообщение для Access 2007.

...