События не работают в MS-Access - PullRequest
0 голосов
/ 13 октября 2009

База данных, над которой я работаю (в MS-Access XP), похоже, как-то повреждена. Он больше не поддерживает какие-либо события - щелчки, изменения, обновления событий, кажется, ничего не работает. Это ошибка, которую я получаю:

Выражение «При изменении», введенное вами в качестве параметра свойства события, выдает следующую ошибку: объект или класс не поддерживает набор событий.

Что я могу сделать, чтобы события снова начали работать? Я пробовал Инструменты-> Утилиты базы данных-> Сжатие и восстановление базы данных ... , но это не помогло. Кроме того, так было не всегда - события изначально работали, но теперь ничего не работает, даже автоматически сгенерированные кнопки команд.

Ответы [ 8 ]

4 голосов
/ 13 октября 2009

Сжатие и восстановление обычно не решают проблемы, возникающие в объектах, отличных от таблиц и индексов. Импорт обычно исправляет их, но, возможно, попробуйте декомпилировать, а затем импортировать. Декомпиляция или как уменьшить размер Microsoft Access MDB / MDE и уменьшить время запуска

Однажды я столкнулся с той же проблемой и задокументировал свои шаги по устранению неисправностей здесь. Выражение При нажатии вы ввели ...

Также см. Поврежденные объекты в поврежденном Microsoft Access MDB

Подведены итоги длительного обсуждения.

Одна страница, на которой может помочь решение, это Ошибки при использовании нескольких версий Access в Vista / Windows 7 Это в основном проблема с разрешениями в реестре.

Еще одно предложение - восстановить установку Office 2003 на панели управления. Затем A2003 возвращается к использованию версии 11 библиотеки, но только до тех пор, пока не будет снова использован A2007, проблема снова появится.

Оригинальный плакат гласил: «Хорошо, после нескольких перезапусков кажется, что удаление среды выполнения 2007 года решило проблему для меня».

3 голосов
/ 14 октября 2009

Тони упомянул об этом в своей длинной строке комментариев, но это звучит в точности как дуэльная проблема с регистрацией в Access. Я не использовал A2007 до недавнего времени (у меня была установлена ​​среда выполнения, чтобы проверить, может ли развернутая под ним база данных, разработанная в A2003 - она ​​могла - но я не использовал ее, так как это тестирование было полностью), и когда я запускаю A2007 после того, как я использовал A2003, он должен перенастроить себя. На днях что-то пошло не так во время реконфигурации A2003 (после последнего запуска A2007), и я получил ошибки, подобные вашей. Запуск A2007 (чтобы заново зарегистрировать все как A2007), а затем запуск A2003 (чтобы заново зарегистрировать все как A2003) устранили проблему.

Ключ заключается в том, что в случае неудачной перерегистрации Access не обязательно узнает об этом при следующем запуске, поэтому вы в конечном итоге работаете в среде, которая частично зарегистрирована для A2003 и частично для A2007. Способ восстановить это - запустить другую версию Access. То есть, если A2003 запускается без уведомления о реконфигурации, закройте его и запустите A2007, чтобы он перенастроил себя и перерегистрировал себя как реальный Access. Затем, когда вы в следующий раз запустите A2003, он перерегистрирует себя в качестве официальной версии Access, и ваше приложение A2003 должно иметь все свои ссылки в правильной форме.

Да, это очень раздражает.

И отнимает много времени.

Я не знаю, почему MS, кажется, думает, что это не нужно исправлять. Хотя я знаю, что они не дают крысиной поддержки разработчикам, которым необходимо запускать A2003 и A2007 бок о бок, есть множество конечных пользователей, у которых может быть установлено приложение времени выполнения A2007, но также установлен A2003 как часть их базовой установки Office. .

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

1 голос
/ 30 января 2015

Я неоднократно сталкивался с одними и теми же проблемами в Access 2013. Со страницы на веб-сайте MS я нашел ответ, который решил мою проблему. Я делюсь этим здесь.

  1. Я благополучно скопировал код где-то за пределами Access, в Блокноте ++.
  2. Затем я удалил всю процедуру сброса, с ее кодом, который не запускался.
  3. Создана свежая процедура события и восстановлен код из Notepad ++ во вновь созданную процедуру события.
  4. Событие ранее не стрельбы началось без сбоев. Проблема решена.

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

Попробуй.

0 голосов
/ 31 мая 2015

Я сжал базу данных (Access 2010) в новую. Нет радости Удалил неработающую форму и импортировал ее из старой базы данных. Нет радости Перекомпилирован. РАДОСТЬ! Не уверен, почему он вышел и почему теперь работает. Я подозреваю, что проблема связана с большим количеством текста в связанном текстовом поле в форме.

0 голосов
/ 12 апреля 2015

У меня была похожая проблема. Когда это началось, я создал новую версию кода, скопировав базу данных. Это не помогло. Однако удаление формы из новой базы данных и ее импорт из оригинала решили проблему. Я не получил никаких предупреждений о поврежденном коде или другом. Он просто работал без каких-либо изменений в VBA и т. Д. В целом немного странно

0 голосов
/ 13 октября 2009

Вы декомпилируете базу данных путем добавления флага / декомпиляции к опциям запуска, т.е.

msaccess.exe «C: \ my_folder \ mydb.mdb» / декомпилировать

Я считаю, что это решает большинство моих проблем. Если нет, то другой - повторно защитить базу данных, запустив мастер безопасности. Это в основном делает новую базу данных и импортирует все объекты для вас

0 голосов
/ 13 октября 2009

Можете ли вы увидеть код в своих модулях кода? Если это так, вырежьте и вставьте его в безопасное место. Затем переключите параметр HasModule для каждой формы на false, восстановите базу данных и восстановите код для вновь созданных модулей кода.

0 голосов
/ 13 октября 2009

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

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

...