Мы - компания, которая разрабатывает и продает условно-бесплатные элементы управления ActiveX и .NET для других разработчиков (см. www.10Tec.com ), и несколько клиентов сообщили об очень странной проблеме с нашим элементом управления сеткой ActiveX, iGrid. , в последних версиях MS Access - 2003/2007 / 2010.
Самым странным моментом является то, что проблема возникает на случайной непредсказуемой стадии при работе с формой MS Access, содержащей наш элемент управления iGrid. После того, как вы в следующий раз откроете форму в режиме конструктора или в представлении формы, вы увидите пустой контейнер элемента управления для iGrid ActiveX и получите сообщение об ошибке «В этом элементе управления нет объекта». В результате этой проблемы вы также можете получить
Ошибка времени выполнения '97':
Невозможно вызвать функцию друга для объекта, который не является экземпляром определения класса.
Похоже, что форма становится поврежденной после некоторых действий разработчика.
Эта проблема никогда не возникала в других средах разработки, включая Visual Basic 6 или даже пользовательские формы в MS Word / Excel VBA, но время от времени это происходит в MS Access. Иногда даже MS Access зависает при открытии формы проблемы, и вам нужно завершить процесс с помощью сочетания клавиш CTRL + ALT + DEL.
Мы пытались найти последовательность действий, которая наверняка может привести к проблеме, но нам не удалось это сделать. Единственное, что может сопровождать появление этой проблемы, это следующее. Если вы ссылаетесь на несуществующий элемент управления формы в своем коде, и вы сталкиваетесь с этой ошибкой при отладке вашей формы (скорее всего, для этого должна быть установлена опция компилятора «Compile On Demand»), форма повредилась, когда вы нажали « Кнопка «Сброс» на панели инструментов в среде VBA.
Если вы даже не знаете, как преодолеть эту проблему, но хотя бы знаете, как исправить форму проблемы - напишите свой рецепт, пожалуйста. Может быть, есть и инструмент для автоматического восстановления.
Мы не можем воспроизвести проблему в совершенно новой форме с нуля, но у нас есть файл mdb проблемы. Вы можете загрузить его из следующего источника (хотя вам может потребоваться также установить iGrid ActiveX):
http://10Tec.com/FSTemp/iGrid_MDB_NoObj_Prob.zip
Конечно, это не проблема незарегистрированного элемента управления ActiveX. Проблема возникает, когда элемент управления правильно зарегистрирован в реестре Windows.