powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / WebSphere MQ. Подключение к менеджеру из MS ACCESS. Прошу помощи в исправлении ошибки.
5 сообщений из 5, страница 1 из 1
WebSphere MQ. Подключение к менеджеру из MS ACCESS. Прошу помощи в исправлении ошибки.
    #39301413
medium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу помощи.
1. На локальном компьютере операционная система Windows.
2. На локальном компьютере установлен IBM WebSphere MQ Explorer
3. В MQ Explorer создан администратор очередей со следующими значениями
a. Имя администритора очередей X_MANAGER
b. Имя хоста или IP – адрес 170.170.170.170
c. Номер порта 1414
d. Канал подключения к серверу CHAN.NAL
4. В MQ Explorer установлено соединение с администратором (менеджером). Видны названия очередей, типы очередей и прочее.
5. На локальном компьютере установлена переменная среды SET MQSERVER = CHAN.NAL/TCP/170.170.170.170(1414)
7. На локальном компьютере установлена библиотека mqax200.dll
8. В файле MS ACCESS TEST.mdb в VBA установлена ссылка на эту библиотеку: IBM MQSeries Automation Classes for ActiveX
9. В MS Access с целью подключения к менеджеру и дальнейшего взаимодействия с очередями пытаюсь выполнить следующий код.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Command1_Click() 
Dim a As Boolean 
Dim ls_s As String 
Dim MQS As MQAX200.MQSession 
Dim QM As MQAX200.MQQueueManager 
Dim Q As MQAX200.MQQueue 
Dim MW As MQAX200.MQMessage 
Dim MR As MQAX200.MQMessage 
Dim PO As MQAX200.MQPutMessageOptions 
Dim GO As MQAX200.MQPutMessageOptions 
Const MQOO_OUTPUT = 16 
Const MQOO_INPUT_AS_Q_DEF = 1 
Set MQS = CreateObject("MQAX200.MQSession") 
Set QM = MQS.AccessQueueManager("X_MANAGER") 
MsgBox '"Подключено"
End Sub


При попытке выполнения происходит ошибка на строке
Set QM = MQS.AccessQueueManager("X_MANAGER")

Сообщение об ошибке:
MQAX200.MQSession::AccessQueueManager CompletionCode = 2, ReasonCode = 2058, ReasonName = MQRC_Q_MGR_NAME_ERROR

Это мой первый опыт работы с WebSphere MQ.
Пожалуйста, подскажите, что я делаю не так?
...
Рейтинг: 0 / 0
WebSphere MQ. Подключение к менеджеру из MS ACCESS. Прошу помощи в исправлении ошибки.
    #39301718
medium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил в код следующий фрагмент
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Compare Database
Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
Private Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Function GetEnvironmentVar(sName As String) As String
    GetEnvironmentVar = String(255, 0)
    GetEnvironmentVariable sName, GetEnvironmentVar, Len(GetEnvironmentVar)
    If InStr(1, GetEnvironmentVar, Chr$(0)) > 0 Then GetEnvironmentVar = Left$(GetEnvironmentVar, InStr(1, GetEnvironmentVar, Chr$(0)) - 1)
    GetEnvironmentVar = sName + ": " + GetEnvironmentVar
End Function
Public Sub Set_MQSERVER()
    SetEnvironmentVariable "MQSERVER", "CHAN.NAL/TCP/170.170.170.170(1414)"
    Debug.Print GetEnvironmentVar("MQSERVER")
End Sub


Таким образом, переменная MQSERVER устанавливается в ходе выполнения процедуры в MS ACCESS

Теперь процедура выглядит следующим образом:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Command1_Click() 
Dim a As Boolean 
Dim ls_s As String 
Dim MQS As MQAX200.MQSession 
Dim QM As MQAX200.MQQueueManager 
Dim Q As MQAX200.MQQueue 
Dim MW As MQAX200.MQMessage 
Dim MR As MQAX200.MQMessage 
Dim PO As MQAX200.MQPutMessageOptions 
Dim GO As MQAX200.MQPutMessageOptions 
Const MQOO_OUTPUT = 16 
Const MQOO_INPUT_AS_Q_DEF = 1 
Set_MQSERVER
Set MQS = CreateObject("MQAX200.MQSession") 
Set QM = MQS.AccessQueueManager("X_MANAGER") 
MsgBox '"Подключено"
End Sub


Ошибка теперь выглядит следующим образом

MQAX200.MQSession::AccessQueueManager CompletionCode = 2, ReasonCode = 2540, ReasonName = Not found in retcode translation table (9EC) (2540)

После этого я поискал в интернете и обнаружил, что ReasonCode - 2540 имеет символическое имя MQRC_UNKNOWN_CHANNEL_NAME
Просмотрев свою библиотеку IBM MQSeries Automation Classes for ActiveX я не нашёл там такой константы MQRC_UNKNOWN_CHANNEL_NAME.
Видимо, поэтому и появляется "Not found in retcode translation table".
Но почему возникает ошибка MQRC_UNKNOWN_CHANNEL_NAME я так и не понял.
Пожалуйста, подскажите: что я делаю не так?
...
Рейтинг: 0 / 0
WebSphere MQ. Подключение к менеджеру из MS ACCESS. Прошу помощи в исправлении ошибки.
    #39302966
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может канал надо в MQ надо стартануть.
Покажите скрин MQ с состоянием канала.
...
Рейтинг: 0 / 0
WebSphere MQ. Подключение к менеджеру из MS ACCESS. Прошу помощи в исправлении ошибки.
    #39302970
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
WebSphere MQ. Подключение к менеджеру из MS ACCESS. Прошу помощи в исправлении ошибки.
    #39303770
medium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, разобрался.
Оказалось, что при определении переменной окружения в имени канала следует использовать (нашёл по ссылке http://www-01.ibm.com/support/docview.wss?uid=swg21166938 (Example 3) "DEF" вместо "ADMIN"
Всё работает.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / WebSphere MQ. Подключение к менеджеру из MS ACCESS. Прошу помощи в исправлении ошибки.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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