使用ObjectScript或VisM以编程方式查看GLOBALS

时间:2016-04-04 03:40:55

标签: intersystems-cache intersystems

我的任务是获取全球数据中所有NODES的列表,具体来说, 所有看似^BACKTR("INDX","COMPANY",,,)的数据:

1:  ^BACKTR("INDX","COMPANY",1,63543,5870)  =   ""
2:  ^BACKTR("INDX","COMPANY",1,63572,9792)  =   ""
3:  ^BACKTR("INDX","COMPANY",1,63573,9904)  =   ""
4:  ^BACKTR("INDX","COMPANY",1,63650,20950) =   ""
5:  ^BACKTR("INDX","COMPANY",1,63651,21058) =   ""

我只需要 节点 ,而不是本身。有没有办法以编程方式获取此列表? 我已经尝试使用VisM控件在VB.net中通过此代码导出整个xml的全局变量:

AxVisM1.Code = "do $system.OBJ.Export(""BACKTR.GBL"",""C:\Users\Support\Desktop\global.xml"")"

但是,这会创建一个包含BACKTR下所有节点的xml文件。我只需要像^BACKTR("INDX", "COMPANY",,,)

这样的节点

我是否可以使用objectscript语法输出该列表?或者我应该使用XML?我只需要对象脚本语法,因为我可以在VisM中执行代码

2 个答案:

答案 0 :(得分:1)

不幸的是,不可能像你想要的那样只在全局中导出数据的任何部分。您可以merge,将任何数据发送到任何空的全局,然后将其导出。

答案 1 :(得分:1)

你能运行两个对象脚本代码吗? (复制到临时全局然后导出)

merge ^BACKTRTMP=^BACKTR("INDX","COMPANY")
do $system.OBJ.Export("BACKTRTMP.GBL","C:\Users\Support\Desktop\global.xml")

然后你可以稍后处理临时全局

kill ^BACKTRTMP