Извлечение данных Avaya CMS в vba работает только при одном шаге
Когда я запускаю свой код для извлечения данных из отчета CMS, если я выполняю один шаг по коду, код работает, но если я запускаю его нормально, он (в конце концов) завершается сбоем, и MS Access перестает отвечать.
' Sets parameters for report
cmsReport.SetProperty reportPrompt(1, 1), reportPrompt(1, 2)
cmsReport.SetProperty reportPrompt(2, 1), reportPrompt(2, 2)
cmsReport.SetProperty reportPrompt(3, 1), reportPrompt(3, 2)
' Runs report and extracts results
EmptyClipboard
b = cmsReport.ExportData("", 44, 0, True, True, True)
Do While ClipboardEmpty
' for some reason, avaya doesn't always copy to clipboard, so keep repeating it until it gives up the data!
b = cmsReport.ExportData("", 44, 0, True, True, True)
Loop
Подпрограммы, используемые для проверки буфера обмена и его очистки перед тем, как я попытаюсь получить данные в буфер обмена:
Private Declare Function apiOpenClipboard Lib "user32" Alias "OpenClipboard" (ByVal hWnd As Long) As Long
Private Declare Function apiEmptyClipboard Lib "user32" Alias "EmptyClipboard" () As Long
Private Declare Function apiCloseClipboard Lib "user32" Alias "CloseClipboard" () As Long
Private Declare Function CountClipboardFormats Lib "user32" () As Long
Sub EmptyClipboard()
If apiOpenClipboard(0&) <> 0 Then
Call apiEmptyClipboard
Call apiCloseClipboard
End If
End Sub
Function ClipboardEmpty() As Boolean
ClipboardEmpty = (CountClipboardFormats() = 0)
End Function
Я использую позднюю привязку для объектов, и у меня установлена Avaya CMS 16.2.
Я попытался установить таймауты, но безуспешно (ни строка, ни оба не смогли решить проблему)
cmsConnection.lTimeOutSecs = 60
cmsConnection.bTimeOutEnable = False
1 ответ
В моей организации в основном были проблемы с взломом недокументированного VBA API для приложения-администратора avaya CMS. Я бы предложил вместо этого использовать прямое соединение ODBC с сервером Avaya. Avaya предоставляет множество документов о том, как ODBC подключается к своим серверам. Если вам нужна помощь в поиске документации avaya, относящейся к вашей установке, пожалуйста, ответьте с версией, с которой вы работаете.