Miguel Altamirano Morales Ответов: 1

Исправлена ошибка 429 в access VBA 2010


Добрый вечер, мир !!. Я работаю со старым приложением Access 2010, и я получаю сообщение об ошибке 429 "Activex не может создать объект".

Ссылка на библиотеку правильно зарегистрирована в списке ссылок проекта, а файл (файл .TLB) теперь правильно зарегистрирован в windows 7. Я думал, что этого достаточно, чтобы решить эту проблему, но она все равно остается прежней; вот почему я прибегаю к этому форуму (надеюсь, правильно так сказать).

Раньше я много работал с VB 6 и находил эту проблему много времени, но мне никогда не было так трудно ее решить. Я должен признать, что у меня нет опыта работы с доступом.

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

Вот фрагмент кода:

Dim objProd as new ProductoTemporal ("ProductoTemporal" is a class contained in a registered DLL)
Dim Cadena as string


После тусклого света, если я поставлю курсор выше "objProd- это видно.

Цитата:
"Объектная переменная или оператор width not stablished"; "Cadena" имеет значение ""


Когда код пытается присвоить значение одному свойству (Conexion):

objProd.Conexion = Cadena  (The string variable already have the proper string connecction)


вот когда программа терпит неудачу.

Я была бы вам очень признательна помогите кто-нибудь.

Что я уже пробовал:

Я даже пытаюсь изменить код, но это отнимает у меня много времени.

Maciej Los

Отладили ли вы свою программу VBA, чтобы выяснить, где происходит ошибка?

Miguel Altamirano Morales

Спасибо за ответ, Мацей. Да, я сделал это. Я прекрасно определил, где именно. Код здесь не работает:

objProd.Подключение = Кадена

Давая мне номер ошибки 429 "компонент Activex не может создать объект".

Этот код следует за "тусклыми" утверждениями, которые я описал в своем вопросе.

Интересно, нуждается ли Access в некоторой конфигурации, чтобы иметь возможность создавать объекты.

Maciej Los

Вы добавили ссылку на эту библиотеку dll в окне Tools->References?

Miguel Altamirano Morales

да, вроде бы все в порядке.

Miguel Altamirano Morales

Я даже могу видеть его в Обозревателе объектов со всеми его членами

1 Ответов

Рейтинг:
2

Maciej Los

Взгляните сюда: Компонент ActiveX не может создать объект или вернуть ссылку на этот объект (ошибка 429)[^]
Там вы найдете наиболее распространенные причины вышеуказанной ошибки.


[РЕДАКТИРОВАТЬ]
Прежде чем вы начнете что-то менять, пожалуйста, прочтите это:
Как проверить и удалить неправильные ссылки на проекты в Редакторе Visual Basic в Word[^] - не важно, что эта тема касается MS Word, редактор VBA тот же самый
Проверьте или добавьте ссылку на библиотеку объектов[^]


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

'this should be declared on the beggining of module
Option Explicit

'your soubroutine
Sub CheckMyObject

Dim objProd as ProductoTemporal

On Error Goto Err_CheckMyObject

Set objProd = New ProductTemporal

MsgBox "Object 'ProductTemporal' has been successfully created!", vbOkOnly, "Success!"

Exit_CheckMyObject:
    On Error Resume Next
    Set objProd = Nothing
    Exit Sub

Err_CheckMyObject:
    MsgBox Err.Description, vbExclamation, Err.Number
    Resume Exit_CheckMyObject

Exit Sub


Miguel Altamirano Morales

Спасибо за этот совет Мацей; страница действительно интересная.

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

И как я могу узнать, есть ли у класса лицензия ?

Библиотека была разработана (я думаю) с помощью VBA, и у нас есть лицензия на использование всей системы. Я не знаю, дал ли нам продавец новую лицензию.

И как я уже говорил вам: Я не уполномочен связываться с продавцом.

Maciej Los

Мигель, я бы предложил перерегистрировать эту dll в системе с привилегиями учетной записи администратора Windows. Есть шанс, что процесс регистрации завершится успешно. С другой стороны, попробуйте изменить свой код в форме, которую я опубликовал в обновленном ответе.

Miguel Altamirano Morales

Доброе утро, Мацей, еще раз спасибо за совет.

Я уже пробовал его и все еще терпит неудачу с той же ошибкой 429, когда он пытается выполнить инструкцию "Set objProd = New ProductTemporal".

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

Может ли быть проблема совместимости с другой версией этой библиотеки dll ?

Я попросил другой компьютер, чтобы посмотреть, не выходит ли он из строя на нем. Я также собираюсь подать заявку на новую версию access (2016); я работаю с access 2010.

Maciej Los

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

Что касается MS Access - не пытайтесь установить новую версию.

Miguel Altamirano Morales

Проект уже имеет ссылку на библиотеку поставщиков, но указывает на файл .tlb. Мы имеем в действительности .dll-файл, но ссылка добавляется в файл .tlb. Я не знаю, как эти файлы обрабатываются между собой, и если я попытаюсь добавить ссылку на dll, она будет отклонена, "ссылка на этот файл не может быть сделана" (или что-то в этом роде).

Пожалуйста, простите меня, если иногда я не могу ясно выразить себя. Английский - не мой родной язык.

В проекте есть ссылка на эту библиотеку.

Miguel Altamirano Morales

вот почему я просто не могу понять, что происходит. Все вроде бы правильно.

Maciej Los

Извиняюсь. Впервые я неправильно прочитал ваш комментарий. Извиняюсь. Пожалуйста,перечитайте мой комментарий еще раз.

Miguel Altamirano Morales

Не волнуйся Мацей, я сделал то, что ты мне посоветовал, и провал остается. Я получил ту же ошибку.

Возможно ли, что это проблема другого рода ?; проблема с отказом в разрешении?, я имею в виду, что мой Access 2010 не имеет разрешений на создание новых объектов ?. Или что-то в этом роде. Эта проблема выходит за рамки доступа scopeI think.
Недавно я использовал библиотеку Microsoft Excel 14.0 и использовал команду "CreateObject" для создания объекта excel.application, и она работала просто отлично.

Это должно быть разумной причиной для этой проблемы.

Maciej Los

С вашей библиотекой что-то не так. Я почти уверен, что a *.dll не зарегистрирован в GAC. Кажется, ваша библиотека dll-это не обычная библиотека dll, но .Продажи компании Dell. Таким образом, он должен быть зарегистрирован в GAC. Проверить это: Как установить сборку в глобальный кэш сборок | Microsoft Docs[^]. Подробнее о GAC можно прочитать здесь: Глобальный Кэш Сборок | Microsoft Docs[^]

Miguel Altamirano Morales

Я запустил утилиту gacutil которую вы мне предложили и MS DOS прислала мне ответ:

"gacutil не является узнаваемым исполняемым файлом" (более или менее).

Я искал через свой проводник windows и нашел его на "Windows\Microsoft.net\Framework\V1.1.4322", но я заметил, что он называется "gacutil.exe.config" и является конфигурационным файлом.

Это правильный вариант ?, должен ли я его скачать ?

Miguel Altamirano Morales

Я немного запутался: Разве GAC не является инструментом для сетевой среды ?.

Это потому, что мы не установили ни одной версии if VS; по крайней мере, не на моем компьютере, где у меня есть тестовая зона с исходной базой данных. Но в производственной области, где тест также выполняется пользователями, этот процесс (и dll) работают нормально.

Maciej Los

Вот именно! Проверьте последнюю версию. Net на производственную площадь, а потом ее скачать с MS и установить на вашей рабочей станции. Наконец, вернитесь к началу нашего обсуждения и повторите все шаги, чтобы выяснить, что происходит. Сегодня я в командировке, поэтому буду недоступен. Удачи вам!

Miguel Altamirano Morales

Мацей, счастливого пути.

Я даже установил Visual Studio 2010, успешно зарегистрировал dll в GAC, и у меня все еще есть та же проблема.

Могу я с вами связаться ?. Или это вопрос публикации другого вопроса ?

Maciej Los

Спасибо, поездка прошла спокойно.
Ну, вы не упомянули об этом .установка сетевого фреймворка. Вы установили его? Это должна быть точно такая же версия, которая соответствует рабочей зоне.

Miguel Altamirano Morales

Я рада, что вы имели хорошую поездку.

На рабочем сервере установлена net framework 4.5, а на моем тестовом ПК-net framework 4.7.

Я удалил версию 4.7 своего компьютера и установил 4.5.

Как я и ожидал найти gacutil.exe после этого, и я не нашел его, я скачал Visual Stuido 2010 ultimate, (я читал gacutil.exe поставляется вместе с этим программным обеспечением). Процесс установки (VS) сказал мне, что он не может установить фреймворк 4, потому что он уже установлен, но действительно скачан gacutil.exe в 4 разных пути (если это необходимо, я скажу вам завтра, с какого из них я его запустил).
Я побежал за ним. gacutil.exe и это посылает мне сообщение, что библиотека была успешно зарегистрирована. Я был очень рад этому и думал, что моя проблема решена, но когда я попытался снова протестировать код доступа, он потерпел неудачу по той же причине ("не могу создать объект").
Я разработал небольшую программу VB NET с недавно загруженным VS и включил ссылку на две библиотеки DLL, включенные в систему, но одна из них с проблемой снова не была распознана; другая действительно была. Так что я просто должен догадаться, что есть проблема с этой dll; но, почему она может быть запущена на производственном уровне, а не в моем тестировании área?, ни даже в VB Net 2010.

Счастливого воскресенья !!!

Maciej Los

Мигель, кажется, единственный способ решить вашу проблему-это связаться с поставщиком dll...

Miguel Altamirano Morales

Мои дорогие друзья из систем área только что сказали мне, что производительный сервер, который они имеют, работает под управлением Windows sercer 2008 (после двух недель я просил их настроить мне среду с теми же характеристиками); так что теперь я собираюсь посмотреть, работает ли она с этим.
Я не имею права связываться с продавцом. (Политика компании).
Большое тебе спасибо, Мацей.

Miguel Altamirano Morales

Visual Studio 2017 действительно распознает эту чертову dll !!!