I can use VisM now to execute Intersystem Cache Objectscript through vb.net
'open the connection
AxVisM1.Connect("CN_IPTCP:127.0.0.1[1972]")
'set namespace to livedata (for formal namespaces, use the @ symbol)
AxVisM1.NameSpace = "LIVEDATA"
'okay, so kunin mo na si GLOBALS...
'set value to nothing muna
AxVisM1.VALUE = ""
'next, get mo yung value via this syntax
AxVisM1.Code = "Set VALUE=$GET(" & theGlobals & ")"
'execute
AxVisM1.ExecFlag = 1
'close the connection
AxVisM1.DeleteConnection()
'now, pass the results to.. a textbox?
Return AxVisM1.VALUE
you can execute objectscript by passing it on .CODE
Now, is there an object script that I can use that can mimic the function of the GLOBAL SEARCH MASK in Intersystems Cache? like in the image below
EDIT I tried the following to pass the data to my datatable, but my datatable is not having any content
Try
'open the connection
AxVisM1.Connect("CN_IPTCP:127.0.0.1[1972]")
'set namespace to livedata (for formal namespaces, use the @ symbol)
AxVisM1.NameSpace = "LIVEDATA"
'okay, so kunin mo na si GLOBALS...
AxVisM1.P1 = "^BACKTR(""INDX"",""COMPANY"",)"
'set value to nothing muna
AxVisM1.VALUE = ""
''next, get mo yung value via this syntax
AxVisM1.Execute("set tRS=##class(%ResultSet).%New(""%Global:Get"")")
AxVisM1.Execute("set P3=tRS.Execute(P0,P1,"""")")
If (AxVisM1.Error <> 0) Then
MsgBox(AxVisM1.ErrorName)
Exit Try
End If
'create the datatable
Dim tbl As New DataTable
tbl.Columns.Add("theGlobals")
tbl.Columns.Add("theValz")
'start the loop
AxVisM1.P2 = "0"
While True
AxVisM1.Execute("set P2=0,P3="",VALUE="" if tRS.Next() { set P2=1,P3=tRS.GetData(1),VALUE=tRS.GetData(2) } ")
AxVisM1.ExecFlag = 1
If (AxVisM1.Error <> 0) Then
MsgBox(AxVisM1.ErrorName)
Exit While
End If
If (AxVisM1.P2 = "0") Then
Exit While
End If
' AxVisM1.P3 - globalName
' AxVisM1.VALUE - data
tbl.Rows.Add(AxVisM1.P3.ToString, AxVisM1.VALUE.ToString)
End While
'close the connection
AxVisM1.DeleteConnection()
'Return AxVisM1.VALUE
Return tbl
Catch ex As Exception
'close the connection
AxVisM1.DeleteConnection()
MsgBox(ex.ToString)
Return Nothing
End Try
In this case you may use %Library.Global
class with Get
query. In this query you can pass exactly the same mask as a second argument, and will get global names and values as a result. in Cache such code may looks like:
Set Namespace = "USER"
Set mask = "^BACKTR(""DATA"",,)"
Set tRS = ##class(%ResultSet).%New("%Global:Get")
Set tSC = tRS.Execute(Namespace,Mask,"")
While tRS.Next() {
Set gn = tRS.GetData(1)
Set data = tRS.GetData(2)
}
And in VB something like this
AxVisM1.P0 = "USER"
AxVisM1.P1 = "^BACKTR(""DATA"",,)"
AxVisM1.Execute("set tRS=##class(%ResultSet).%New(""%Global:Get"")")
AxVisM1.Execute("set P3=tRS.Execute(P0,P1,"""")")
If (AxVisM1.Error <> 0) Then
MsgBox(AxVisM1.ErrorName)
Exit Try
End If
AxVisM1.P2 = "0"
While True
AxVisM1.Execute("set P2=0,P3="",VALUE="" if tRS.Next() { set P2=1,P3=tRS.GetData(1),VALUE=tRS.GetData(2) } ")
If (AxVisM1.Error <> 0) Then
MsgBox(AxVisM1.ErrorName)
Exit While
End If
If (AxVisM1.P2 = "0") Then
Exit While
End If
' AxVisM1.P3 - globalName
' AxVisM1.VALUE - data
End While
来源:https://stackoverflow.com/questions/36370452/get-globals-similar-to-global-search-mask-intersystems-cache