powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема с подключением к Cache из VBA - error 429
15 сообщений из 15, страница 1 из 1
Проблема с подключением к Cache из VBA - error 429
    #38676958
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

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

Возникла необходимость подключиться к каше из VBA (экселевского, в модельном случае).
Написал соответствующий код, подключил CacheObject в References - на моей машине все отработало. Попытался запустить тот же код на машине, где с этой программой должны работать - выдается сообщение об ошибке

ActiveX component can't create object or return reference to this object (Error 429)

В принципе, между машинами есть два основных различия: у меня WinXP и стоит каше-сервер (введена лицензия), на той машине Win7 и стоит только клиент. Но: аналогично подключающиеся с CacheFactory клиентские программы, написанные на Delphi, там работают безо всяких проблем.

MSDN предлагает следующие варианты причины:

1. The class isn't registered.


2. A DLL required by the object can't be used, either because it can't be found, or it was found but was corrupted.


3. The object is available on the machine, but it is a licensed Automation object, and can't verify the availability of the license necessary to instantiate it.


Мне кажется, если бы причина была в одном из 1-3, то не работали бы и программы на дельфи

You are trying to use the GetObject function to retrieve a reference to class created with Visual Basic. - тоже вроде бы мимо

Access to the object has explicitly been denied.
For example, you may be trying to access a data object that's currently being used and is locked to prevent deadlock situations. If that's the case, you may be able to access the object at another time.


И это, как мне кажется, тоже не должно происходить.

Код тривиальный:
----------------
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim Connect As CacheObject.Factory

Private Sub UserForm_Initialize()
Set Connect = CreateObject("CacheObject.Factory")
If Not Connect.IsConnected() Then Connect.Connect ("cn_iptcp:127.0.0.1[1972]:WRK")
End Sub


Дальше там идет обращение к запросу - заполнить ComboBox - но до него дело не доходит.
На клиентской машине подключение идет к "боевому" серверу - но с моей машины нормально работает и с ним, так что не думаю, что причина может быть в этом.
------------------

Не подскажите, в чем может быть дело?
К сожалению, отобрать машину у пользователя и экспериментировать на ней в свое удовольствие возможности нет :)

С уважением,
Михаил.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38676982
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вашей машине работает потому что у вас на машине установлен Cache'
На той машине на которой должно работать, судя по всему конечно нет, и не установлены необходимые библиотеки.
Самый простой путь решения проблемы, это установить на той машине Cache', но только клиентские компоненты.

или можно сделать иначе, нужно собрать все необходимые DLL, и запустить bat-ник regfiles.bat
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677036
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike Ivanov ,

Если проект на Delphi работает, то возможно разрядности не совпадают, например у клиента установлен Excel x64.

Старый CacheObject.dll поддерживается только в 32-битной версии , тогда как новый CacheActiveX.dll - для обоих вариантов.

PS: подробности см. здесь , в том числе и про распространение приложения.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677039
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, это похоже на правду.
Я пробовал на той машине еще из одной программы (под которую все и затевается, на самом деле - SolidWorks), но она, наверное, тоже 64. А каше - пятерка, явно 32.

Спасибо.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677042
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

тогда почему дельфовая клиентская программа нормально работает?
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677044
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike IvanovDAiMor,

тогда почему дельфовая клиентская программа нормально работает?Да, про делфи я не сразу заметил.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677146
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike Ivanov,

У вас есть уверенность, что дельфи-программа подключается именно через Factory? Она ведь может и через VisM (Cache Direct), и через ODBC...

Если уверенность есть, попробуйте подключиться чем-то более стандартным. Например, Проводником или Студией. Да, их придётся установить (как вам советуют, в составе клиента Cache), но что делать?
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677175
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,

Да, дельфи-прога определенно через factory - сам писал :)

Возможно, попробую перейти на ADO в VBA-программе - попытка просто скопировать CacheActiveX и подключить в проект результатов не дала (если не считать того, что на моей машине тоже перестало работать :)) - вероятно, чтобы она работала, надо новый клиент целиком ставить (всякие 2009-го года версии у меня тоже есть, но опасаюсь, не полезет ли какая-нибудь несовместимость, если я оставлю старый сервер и установлю новый клиент).
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677180
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike Ivanov,

Насколько помню, CacheActiveX в Cache 5.0 ещё не было. Может, чем-то поможет.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677184
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike Ivanovно опасаюсь, не полезет ли какая-нибудь несовместимость, если я оставлю старый сервер и установлю новый клиентПравильно опасаетесь: так не нужно делать.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677185
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это существенно, т.к. у CacheObject и CacheActiveX разные протоколы обмена с сервером.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677219
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovЭто существенно, т.к. у CacheObject и CacheActiveX разные протоколы обмена с сервером.

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

Спасибо.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38677462
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Финальное: в итоге сделал через ADO, все работает.
Спасибо всем ответившим за подсказки, а то я бы еще много времени на бесплодные попытки убил.
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38679853
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В личной переписке попросили привести пример кода с подключением через ADO.

Примерно так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private Sub UserForm_Initialize()
 ConnectCacheADO
 ADOFillCombo
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 cn.Close
End Sub

Private Sub ConnectCacheADO()

Set cn = CreateObject("ADODB.Connection")

cn.ConnectionString = "DRIVER={InterSystems ODBC}; SERVER=127.0.0.1; PORT=1972; DATABASE=WRK; UID=_system; PWD=SYS"

cn.Open
End Sub

Private Sub ADOFillCombo()
Dim rs As Object
Set rs = CreateObject("ADODB.RecordSet")

rs.Open "select distinct dGroup from DICT.DetProp where dGroup is not null", cn

rs.MoveFirst
Do Until rs.EOF
 cmbGroup.AddItem Trim((rs.Fields(0)))
  rs.MoveNext
Loop
 
rs.Close

End Sub
...
Рейтинг: 0 / 0
Проблема с подключением к Cache из VBA - error 429
    #38679909
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike IvanovВ личной переписке попросили привести пример кода с подключением через ADO.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема с подключением к Cache из VBA - error 429
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]