0

コードを実行して CMS レポートからデータを取得する場合、コードを 1 ステップ実行するとコードは機能しますが、通常どおりに実行すると (最終的には) 失敗し、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
4

1 に答える 1

1

私の組織では、文書化されていない VBA API を avaya CMS スーパーバイザー アプリケーションにハッキングすることにほとんどフラストレーションを感じていました。代わりに、Avaya サーバーへの直接 ODBC 接続を使用することをお勧めします。Avaya は、サーバーへの ODBC 接続方法に関するドキュメントを多数提供しています。ご使用のインストールに固有の avaya のドキュメントを見つけるのにサポートが必要な場合は、使用しているバージョンを返信してください。

于 2013-03-26T13:09:55.670 に答える