MS Access 2003/2007/2010: Ошибка 97 «Не удается вызвать функцию друга ...» и «В этом элементе управления нет сообщения» для элемента управления ActiveX - PullRequest
0 голосов
/ 02 ноября 2011

Мы - компания, которая разрабатывает и продает условно-бесплатные элементы управления 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...