Get GLOBALS similar to “Global Search Mask” Intersystems Cache

醉酒当歌 提交于 2019-12-08 03:49:34

问题


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

回答1:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!