运行没有关联表的 JMP 脚本我有一个 JMP 脚本,它启动 SQL 查询,然后处理生成的数据表。然后它执行一系列列操作和其他表操作。当我在 JSL 构建器中执行脚本时,它仍然在“播放”按钮旁边的框中列出一个数据表。即使我有“NamesDefaultToHere(1)”,它通常仍会更改 JSL 窗口框中列出的表中的列(如果它们具有相同的列名称) - 而不是由 SQL 查询生成的表。我可以在脚本中添加一行来防止这种行为吗?例如,使用下面的脚本 - 如果现有表有一列“DIEID”,它将发生更改,而不是脚本创建的 SQL 数据表。如果没有打开的表,则它可以正常工作。
谢谢,如果您需要更多信息,请告诉我。
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
dtIGNITE << show window(1);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));
回复:运行没有关联表的 JMP 脚本在我迄今为止的数据拼写错误和我自己对范围/变量的一些困惑之间 - 你的解决方案有效。下面是最终实现的脚本。
感谢您的帮助!
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
Current Data Table (dtIGNITE);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));回复:运行没有关联表的 JMP 脚本要指定 dtIGNITE 表为当前表,语法为:
Current Data Table( dtINGNITE );
由于 Baselines-EXT 表具有相同名称的列,因此请尝试将可选列引用添加到 Column() 函数。这告诉 JMP 在哪个表中查找 DIEID 和 FCID 列。
Column( dtIGNITE, "DIEID" ) << Formula( <FORMULA> );</FORMULA>
或者,您可以组合 New Column() 和 Formula() 行。
希望有帮助!
回复:运行没有关联表的 JMP 脚本您可能会考虑:
dt1 = New Table( "dtIgnite" );
query << Run Foreground( UpdateTable( dt1 ) );
Wait(0);
dt1 << New Column(...
将句柄分配给表然后更新它可能会给出更一致的结果。
回复:运行没有关联表的 JMP 脚本我附上了可能有帮助的屏幕截图。
我通常从编辑器窗口运行脚本。dtIGNITE 是由 SQL 表生成的表,但是当我运行脚本时,表“Baselines-Ext”将被修改,因为它在 GUI 中被列为当前数据表。
我添加了以下几行:
dtIGNITE << Set Name ("RUNS");
Current Date Table = Data Table("RUNS");
到我的 jsl,但这并没有解决问题。
如果 JMP 中没有打开其他表,则该脚本将按照编写的方式完美运行。
我会尝试调试选项并更新如果我发现什么。

回复:运行没有关联表的 JMP 脚本@PChemMan ,
我不确定我是否正确理解了你的问题。 如果我在这里尝试的方法没有帮助,请在您的回复中提供更详细的解释。
但是,做一些假设,让我们看看您有 2 个表 - 1 个表称为“dtIGNITE”,另一个表暂时称为“SQLTable”。 您担心您的脚本对 dtIGNITE 表而不是 SQLTable 进行更改?
如果是这样 - 您可以尝试添加以下代码吗
Current Data Table = Data Table("SQLTable"); 在执行任何操作之前。 这应该使 SQL 生成的表成为当前表。