用户使用我无法重现的脚本获取错误。我完成了我的应用程序,它在我的macihne上按预期工作。我发送给少数用户来测试应用程序。用户不应该收到错误消息。
您需要从Col列表中选择一列的部分脚本。
我在脚本的前面创建了这个Col List Box,并分配了一些onChange脚本,它几乎可以读取所选的列:
colListX = Col List Box (Data Table(dt<<GET name=""></GET>
现在,当用户单击列表框中的任何列时,他们会收到以下错误消息。我在代码中放了一些show()命令并要求它们运行它:

所以,这里colListX - 是我正在使用的Col List Box。colListXselected - 是当前通过Get Selected获取的列。有趣的是:用户将其显示在日志中
colListXselected = {"eventtime"};
Is Scriptable(colListXselected) = 1;
我的日志显示为
colListXselected = {:eventtime};
Is Scriptable(colListXselected) = 1;
并且运行的代码是相同的。
我想整个错误都发生了,因为用户没有将它作为列,所以即使对象是可编写脚本的,但由于它不是列,因此无法将Get Name消息应用于它。
无论如何,任何想法为什么用户与我的输出有这种差异?如何排除故障?
谢谢,
中号
Re:用户因我的脚本而无法重现错误。这是JMP 13.0.0中的一个问题。 请参阅JMP 问题说明59737 详情。 您可以从下载免费更新到JMP 13.2.1 JMP软件更新页。
希望有所帮助!
Re:用户因我的脚本而无法重现错误。有时间回到这个。
非常感谢您进行故障排除 - 现在它很有意义,因为我知道为什么我的用户会收到此错误。
我不明白的是为什么我的JMP返回列引用列表,而它应该(并且它与其他用户一起)返回字符串列表。
要排除其余代码并确保它对它没有任何影响,我编写了这个小脚本并要求我的用户运行它:
Names Default To Here( 1 );
Clear Log();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Col List Box Example",
colList = Col List Box( all, width( 250 ), maxSelected( 1 ) ),
);
colList << Set Selected (2);
colListSelected = colList<< Get Selected;
testString="test";
show(Type(testString));
show(Type(colListSelected));
show(Type(colListSelected[1]));
show(colListSelected[1]);
我的JMP返回这个:
Type(testString) = "String";
Type(colListSelected) = "List";
Type(colListSelected[1]) = "Name";
colListSelected[1] = :age;
他们的JMP返回:
Type(testString) = "String";
Type(colListSelected) = "List";
Type(colListSelected[1]) = "String";
colListSelected[1] = "age";
这怎么可能?来自JMP的任何人都可以看看这个吗?或者我应该发送它支持?
谢谢,
中号
Re:用户因我的脚本而无法重现错误。您可以使用JMPVersion()函数来打印JMP的版本。
Re:用户因我的脚本而无法重现错误。Miguello,
ColListBox << get selected返回列名列表,即带引号的字符串列表。我不知道你的结果如何是列引用。 关于错误:请看下面的脚本。两个列表usrsel1和usrsel2都是列表和脚本。 usrsel1 [1]是可编写脚本的,因为它是一个列引用:它有消息(方法)。usrsel2 [1]是一个不可编写脚本的字符串。这就是您报告的错误消息告诉您的内容。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
usrsel1 = { :height };
usrsel2 = { "height" };
//Run one line at a time
Show( IsScriptable(usrsel1), IsScriptable(usrsel2) ); // both are 1
Show( IsScriptable(usrsel1[1]), IsScriptable(usrsel2[1]) ); //results are 1, 0
show(usrsel1[1] <<GET name=""></GET>我知道没有首选项或选项设置(在Windows上)获取选择返回列引用。