直接在 JMP 主页运行插件时出现错误大家好,JMP 社区:
我把2个脚本保存到插件中,在某些情况下会出现bug,脚本的工作原理如下:
- 第一个插件将创建一个新表并创建几个新列,我们将这个新表称为“计算表”
- 接下来我将运行“计算表”中的第二个插件,它将需要打开另一个现有文件(我们称之为“原始数据表”),然后从“原始数据表”中获取数据并在“计算表”中输入一些内容
//This is the first script
Names Default To Here( 1 );
New Table( "Calculate table");
dt = current data table();
newcolumn = {"X", "Y"};
for each({colval},newcolumn,
dt << new column(colval);
);
//This is the starting lines of 2nd script
Names Default To Here( 1 );
dt = current data table();
file = Pick file( "Select raw data table" );
if(is empty(file),
show("No file selected");
stop();
);
Try(
dt2 = open(file);
,
show("No file selected");
stop();
);<BR /> // The following code are not shown here
无bug的情况:
- 如果我打开任何数据表,运行第一个插件,然后在新表中运行第二个插件,它就可以工作
有 Bug 的情况:
- 如果我直接在 JMP 主页中运行第一个插件,然后运行第二个插件,则第二个插件会出现错误
基本上,第二个插件的作用是从“原始数据表”获取数据和列公式,然后输入到“计算表”中,然后创建一个带有滑块框的新窗口。当出现错误时,滑块框将不起作用,但获取数据和公式仍然有效
自动化和脚本回复:直接在 JMP 主页运行插件时出现错误猜测:当前数据表不是您所期望的。也许将其打印到日志中进行验证。我认为当前数据表处于通常属于窗口的上下文中,而主窗口正在添加另一个上下文。通过从表中运行插件,您可能 (1) 通过触摸它来确保该表是当前的,并且 (2) 获取以该表为当前表的上下文。
回复:直接在 JMP 主页运行插件时出现错误我按照你说的做,打印 dt 和 dt2,它们是正确的。
然后我意识到当我在滑块框中调用列时,我没有指定哪个数据表,所以我在列前面放了 dt:
关闭 dt2 后,我还在代码中间再次添加了一个当前数据表(dt)
现在它运行良好。
lubPP = Lineup box(NCol(1),
PPtb = Text Box( "PP: " || Char( PPmin ) ),
PPsb = Slider Box(
PPmin, PPmax, PPValue,
PPb << Set Text( "PP: " || Char( PPValue ) );
:PP << set each value(PPValue); // I should use dt:PP here
new = dt:NewPP << get values;