Bloomberg API:如何检查连接是否有效?

时间:2014-06-26 07:22:04

标签: vba bloomberg

我正在实现一个依赖Bloombergs blpapilib2的工具,它是Bloomberg API COM Lib 3.5。

在让我的用户访问任何刷新数据功能之前,我想确保连接有效。到目前为止我的方法:

  1. 检查库是否可用并链接。基本上,通过引用的循环可以完成工作。

  2. 使用session.Start()打开连接。我希望在这里得到一个错误,但它不会给我一个。因此,第3步。

  3. 请求一些数据并进行验证(确保其不为空)

  4. Surporisingly,我无法可靠地重现获得空洞的结果。我希望我的会话依赖于用户被闯入终端。看来我错了;即使我退出,我的请求也会被处理并返回正确的数据。

    我可以想象两种情况:

    • bbcom-Server中的一些后台缓存

    • 使用了另一种身份验证方法


    我有两个问题:

    Q1。确保用户能够下载数据的最佳方法是什么?

    Q2。如何验证连接是否已成功建立且用户是否已通过身份验证?

    感谢。

1 个答案:

答案 0 :(得分:2)

要“切断”连接,您需要注销并登录其他计算机。如果您只是注销,则仍可使用API​​提供Feed。

这是我测试连接的方式 - 我认为它运行得相当好。我有一个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