События не работают в MS-Access

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

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

Что я могу сделать, чтобы события снова начали работать? Я пробовал Tools-> Database Utilities-> Compact and Repair Database ... , но это не помогло. Кроме того, так было не всегда - события изначально работали, но теперь ничего не работает, даже автоматически сгенерированные кнопки команд.

13.10.2009 01:00:33
Был ли это файл .mde, который был переименован в .mdb?
JeffO 13.10.2009 14:56:19
Нет, это все время был файл mdb, но установка среды выполнения Access 2007 привела к нескольким вещам.
a_m0d 13.10.2009 23:28:19
8 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

Длительное обсуждение подвело итог.

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

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

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

4
14.10.2009 03:09:59
Я выполнил шаги, которые вы наметили, но они мне совсем не помогли. Однако на сайте с дефисами я увидел сообщение, в котором упоминается, что Office 2007 вызывает проблемы - конечно же, у меня на компьютере установлена ​​среда выполнения Access 2007, и этот проект (по некоторым причинам) ссылается на библиотеку объектов Access 12. В другом посте говорится об изменении приоритета ссылки, но я не могу этого сделать, потому что ссылка (по-видимому) используется, хотя я ничего не запускаю.
a_m0d 13.10.2009 04:17:48
О, проект A2002 ссылается на библиотеку объектов Access 12? Я видел эту проблему. Я думал, что это было упомянуто в allenbrowne.com, но я не могу видеть это там прямо сейчас. Это какая-то проблема с разрешениями. Что происходит, когда вы создаете новый MDB? Вы все еще видите библиотеку объектов Access 12?
Tony Toews 13.10.2009 04:24:16
Я не знаю, что вы подразумеваете под дефисом.
Tony Toews 13.10.2009 04:24:55
Ошибки , использующие несколько версий Access под Vista / Windows 7 allenbrowne.com/bug-17.html
Tony Toews 13.10.2009 04:27:27
experts-exchange.com/Microsoft/Development/MS_Access/… - пост, за которым я пытался следовать. Я пытался создать новый MDB и импортировать формы и т. Д., Но эта ссылка также идет с ним
a_m0d 13.10.2009 04:28:02

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

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

0
13.10.2009 01:08:31
Как декомпилировать и перекомпилировать базу данных? Я не вижу опции для этого в меню.
a_m0d 13.10.2009 01:09:39
Импорт всего в новую базу данных, казалось, также импортировал все ошибки ...
a_m0d 13.10.2009 01:13:09
Alt + F11 вызовет VBA Designer. Выберите Debug | Compile.
JeffO 13.10.2009 02:37:00
Отладка-> Компиляция затенена - не могу выбрать это.
a_m0d 13.10.2009 03:52:01

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

0
13.10.2009 01:19:38

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

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

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

0
13.10.2009 07:24:18
Обратите внимание, что если у вас несколько версий Access, я не уверен, какую версию Access можно использовать для декомпиляции. Результаты могут не быть симпатичными. <smile>
Tony Toews 14.10.2009 03:10:59
Справедливо, в этом случае добавьте точный путь к версии доступа, с которой вы хотите выполнить декомпиляцию
Kevin Ross 15.10.2009 10:57:21

Тони упомянул об этом в своей длинной цепочке комментариев, но это звучит в точности как дуэльная проблема с регистрацией в 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. ,

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

3
14.10.2009 02:27:02
Единственное решение здесь - использование среды выполнения Sagekey.
Tony Toews 14.10.2009 03:12:14
Это сработало бы, если у вас есть дуэль во время выполнения в 2007 году с полной версией A2003, но как бы вы использовали сценарии SageKey для решения проблемы при полной установке двух приложений?
David-W-Fenton 15.10.2009 03:34:14

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

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

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

Попробуй это.

1
30.01.2015 13:15:52
Это помогло мне! Иногда это так же просто, как воссоздать событие. Думаю, это было незарегистрировано где-то вниз по линии. Спасибо!
Roland 21.09.2015 15:28:17

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

0
12.04.2015 07:52:06

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

0
31.05.2015 03:25:28