Imports EikonDesktopDataAPI Imports RSearch Public Class ComClass1 #Region "COM GUIDs" ' These GUIDs provide the COM identity for this class ' and its COM interfaces. If you change them, existing ' clients will no longer be able to access the class. Public Const ClassId As String = "11a7abe0-0e36-4cab-95f0-ac71b3a0b3f2" Public Const InterfaceId As String = "3e1deaef-31c7-4dbd-bd6b-2bcd2188e9d8" Public Const EventsId As String = "3dfd9e15-a302-4c4f-8ae2-e701f0e6da79" #End Region ' A creatable COM class must have a Public Sub New() ' with no parameters, otherwise, the class will not be ' registered in the COM registry and cannot be created ' via CreateObject. Public Sub New() MyBase.New() End Sub Dim WithEvents MyEikonDesktopDataAPI As EikonDesktopDataAPI.EikonDesktopDataAPI Dim mylist As New ArrayList() Dim histlist As Object Dim MyRSearchMgr As RSearch.RSearchMgr Dim MyRSearchCookie As Long Dim WithEvents MyRSearchQuery As RSearch.RSearchQuery Dim WithEvents myAdxRtHist As ThomsonReuters.Interop.RTX.AdxRtHistory Public Function ConnectToEikon() As String ' Create the Eikon Desktop object MyEikonDesktopDataAPI = New EikonDesktopDataAPI.EikonDesktopDataAPI ' Initialize the Eikon Desktop object to connect to Eikon Dim l_result As EEikonDataAPIInitializeResult l_result = MyEikonDesktopDataAPI.Initialize() If (l_result <> EEikonDataAPIInitializeResult.Succeed) Then DisconnectFromEikon() If (l_result = EEikonDataAPIInitializeResult.Error_Reinitialize) Then Return "Reinitialization of EikonDesktopDataAPI is forbidden" ElseIf l_result = EEikonDataAPIInitializeResult.Error_InitializeFail Then Return "Initialization of EikonDesktopDataAPI Fail" End If Else Return "Connected!" End If End Function Public Function DisconnectFromEikon() As String ' Release the RSearch manager is necessary ReleaseRSearchMgr() ' Release Eikonnect MyEikonDesktopDataAPI = Nothing Return "Disconnected!" End Function Public Function GetInterDay(ByVal ItemName, ByVal Mode, ByVal RequestHistory) As String If Not IsNothing(myAdxRtHist) Then myAdxRtHist.FlushData() myAdxRtHist.ErrorMode = ThomsonReuters.Interop.RTX.AdxErrorMode.EXCEPTION myAdxRtHist.Source = "IDN" myAdxRtHist.ItemName = ItemName myAdxRtHist.Mode = Mode myAdxRtHist.RequestHistory(RequestHistory) Return "History Query Sent!" Else Return "History Query Not Sent!" End If End Function Private Sub myAdxRtHist_OnUpdate(ByVal DataStatus As ThomsonReuters.Interop.RTX.RT_DataStatus) Handles myAdxRtHist.OnUpdate If DataStatus <> ThomsonReuters.Interop.RTX.RT_DataStatus.RT_DS_FULL Then Exit Sub End If histlist = myAdxRtHist.Data End Sub Public Function RequestRHistoryData() As Object RequestRHistoryData = histlist End Function Public Function CreateRSearchMgr() As String ' Create the RSearch manager MyRSearchMgr = MyEikonDesktopDataAPI.CreateRSearchMgr() ' Initialize the RSearch manager and retrieve a session cookie MyRSearchCookie = MyRSearchMgr.Initialize(RSearch_ClientType.RS_CT_EIKON) Return "Search Manager Created" End Function Public Sub ReleaseRSearchMgr() 'Release the RData if necessary MyRSearchQuery = Nothing ' Release the RSearch manager If Not IsNothing(MyRSearchMgr) Then MyRSearchMgr.Finalize(MyRSearchCookie) MyRSearchMgr = Nothing End If End Sub Private Function UpdateUserFormAccordingToConnectionStatus(ByVal EStatus As EikonDesktopDataAPI.EEikonStatus) As String Select Case EStatus Case EikonDesktopDataAPI.EEikonStatus.Connected Return "Status : Connected to Eikon" Case EikonDesktopDataAPI.EEikonStatus.Disconnected DisconnectFromEikon() Return "Status : Disconnected from Eikon" Case EikonDesktopDataAPI.EEikonStatus.LocalMode ReleaseRSearchMgr() Return "Status : Eikon local mode" Case EikonDesktopDataAPI.EEikonStatus.Offline DisconnectFromEikon() Return "Status : Offline" End Select End Function Public Function CreateRData(ByVal AssetClass As String, ByVal SearchCriteria As String, ByVal RequestParam As String) As String ' Create a RSearchQuery MyRSearchQuery = MyRSearchMgr.CreateRSearchQuery(MyRSearchCookie) ' Initialize the RSearchQuery to request If Not IsNothing(MyRSearchQuery) Then MyRSearchQuery.AssetClass = AssetClass MyRSearchQuery.SearchCriteria = SearchCriteria MyRSearchQuery.SearchParameters = RequestParam 'MyRSearchQuery.Send() Return "Query Sent!" Else Return "Query Not Sent!" End If End Function Private Sub MyRSearchQuery_OnUpdate(ByVal searchResponse As IRSearchResponse) Handles MyRSearchQuery.OnUpdate UpdateUserFormAccordingToRSearchResponse(searchResponse) End Sub Private Sub MyEikonDesktopDataAPI_OnStatusChanged(ByVal EStatus As EikonDesktopDataAPI.EEikonStatus) Handles MyEikonDesktopDataAPI.OnStatusChanged ' Update the use form according to the status of the connection to Eikon UpdateUserFormAccordingToConnectionStatus(EStatus) End Sub Public Function RequestRSearchData() As String() ' Send the RData request to RSearch mylist.Clear() If Not IsNothing(MyRSearchQuery) Then MyRSearchQuery.Send() End If Dim myArr As String() = CType(mylist.ToArray(GetType(String)), String()) Return myArr End Function Private Sub UpdateUserFormAccordingToRSearchResponse(ByVal searchResponse As IRSearchResponse) If searchResponse.Status = 0 Then Dim MyRSearchInstrumentsList As RSearch.IRSearchInstrumentsList MyRSearchInstrumentsList = searchResponse.Instruments Dim index As Integer For index = 1 To MyRSearchInstrumentsList.Count Dim MyCurInstrument As RSearch.IRSearchInstrument MyCurInstrument = MyRSearchInstrumentsList(index) mylist.Add(MyCurInstrument.Code) 'Text_output += vbCrLf Next Else mylist.Add("Response Error Status and Description[" + searchResponse.Status + "] : " + searchResponse.StatusDescription) End If End Sub End Class