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

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

Возникла необходимость подключиться к каше из 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
23.06.2014, 11:21
    #38676982
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с подключением к Cache из VBA - error 429
На вашей машине работает потому что у вас на машине установлен Cache'
На той машине на которой должно работать, судя по всему конечно нет, и не установлены необходимые библиотеки.
Самый простой путь решения проблемы, это установить на той машине Cache', но только клиентские компоненты.

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо.
...
Рейтинг: 0 / 0
23.06.2014, 15:37
    #38677462
Mike Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с подключением к Cache из VBA - error 429
Финальное: в итоге сделал через ADO, все работает.
Спасибо всем ответившим за подсказки, а то я бы еще много времени на бесплодные попытки убил.
...
Рейтинг: 0 / 0
25.06.2014, 15:11
    #38679853
Mike Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с подключением к Cache из VBA - error 429
В личной переписке попросили привести пример кода с подключением через 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
25.06.2014, 15:32
    #38679909
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с подключением к Cache из VBA - error 429
Mike IvanovВ личной переписке попросили привести пример кода с подключением через ADO.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблема с подключением к Cache из VBA - error 429 / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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