2014-06-26 58 views
2

我正在實施一個依賴Bloombergs blpapilib2的工具,它是Bloomberg API COM Lib 3.5。Bloomberg API:如何檢查其連接是否有效?

在給我的用戶訪問任何刷新數據功能之前,我想確保連接正常。我的方法到目前爲止:

  1. 檢查圖書館是否可用和鏈接。基本上通過參考循環來完成這項工作。

  2. 用session.Start()打開連接。我希望在這裏得到一個錯誤,但它不會給我一個。因此,步驟3.

  3. 請求一些數據並驗證它(確保其不爲空)

Surporisingly,我不能可靠地重現得到一個空的結果。我期望我的會議依賴於一個用戶進入終端。看來我錯了;即使我註銷,我的請求將被處理並返回正確的數據。

我能想象兩種場景:

  • 的bbcom,服務器在某些後臺緩存

  • 其他身份驗證方法用於


我有兩個問題:

Q1。

Q1。確保用戶能夠下載數據的最佳方式是什麼? Q2302。如何驗證連接是否已成功建立並且用戶已通過身份驗證?

謝謝。

回答

2

要「切斷」連接,您需要註銷並登錄到其他計算機上。如果您只是註銷,則Feed仍然可以使用API​​。

這就是我如何測試連接 - 我認爲它工作得很好。我有一個BloombergWrapper類來處理所有與API通信的低層次的東西,它具有以下功能:

Private pSession As blpapicomLib2.Session 
Private pService As blpapicomLib2.Service 

Private Sub Class_Initialize() 

    Dim locStatusBar As Variant 
    Dim locBbResult As Variant 

    On Error GoTo error_handler 

    If Application.StatusBar = False Then locStatusBar = False Else locStatusBar = Application.StatusBar 
    Application.StatusBar = "Connecting to Bloomberg..." 

    Set pSession = New blpapicomLib2.session 
    pSession.Start 

    pSession.OpenService ("//blp/refdata") 
    Set pService = pSession.getService("//blp/refdata") 

    Application.StatusBar = locStatusBar 
    Exit Sub 

error_handler: 
    If InStr(Err.Description, "timeout") Then 
    Call MsgBox("A Bloomberg timeout has occured. Make sure you are logged on your terminal.", vbCritical + vbOKOnly, "Bloomberg error...") 
    End If 
    If locStatusBar <> "" Then Application.StatusBar = locStatusBar 

End Sub 

Private Sub Class_Terminate() 
    pSession.Stop 
    Set pSession = Nothing 
End Sub 
+0

謝謝,這看起來很像是我要找的。出於某種原因,'On Error GoTo errHandler'不會捕獲我得到的運行時錯誤:「運行時錯誤-2147024809(80070057):未找到服務'// blp/refdata'」。爲什麼? (Lib已鏈接,BB未運行,並且從未在此計算機上運行,​​但已安裝。)謝謝! – phi

+0

這很奇怪。我不確定爲什麼要誠實... – assylias

+0

只是一個快速更新,我讓調試器停止了所有的錯誤,包括那些處理的地方,渲染任何錯誤處理毫無意義;)這個解決方案工作得很好。謝謝! – phi