如何判断数据表是否已经打开?这是我在 JMP 8 之前所做的方法:
tableIsOpen = Function( {tname},
{dt, rv = 0},
Try(
dt = Data Table( tname );
rv = 1;
);
rv;
);
这在 JMP 版本 8 中不起作用,因为如果表尚未打开,DataTable 函数将打开文件对话框。用户可以随时按“取消”,但这很烦人。
谢谢你的帮助。
汤米
回复:如何判断数据表是否已打开?谢谢你的代码。我现在正在尝试。
我希望有一种更直接的方法来检查打开的数据文件。回复:如何判断数据表是否已打开?您可以通过将数字传递给 Data Table() 并比较名称来循环遍历所有打开的表。
tableIsOpen = Function( {tname},
{rv = 0, i},
For( i = 1, i < N Table() + 1 & rv == 0, i++,
If( Lowercase( Data Table( i ) << Get Name ) == Lowercase( tname ),
rv = 1
)
);
rv;
);
编辑:使用“<=”选项
tableIsOpen = Function( {tname},
{rv = 0, i},
For( i = 1, i <= N Table() & rv == 0, i++,
If( Lowercase( Data Table( i ) << Get Name ) == Lowercase( tname ),
rv = 1
)
);
rv;
);
(论坛软件确实不喜欢小于或等于,这就是为什么我使用简单的小于并加 1。)
回复:如何判断数据表是否已经打开?偶然发现了这个帖子,想找一些类似的方法,用于在测试代码时关闭脚本开头那些一直打开的数据表,而不是统计它们。我结合了这里和另一个帖子里的代码。我想把它贴出来,希望对看到这个帖子的人有用:
// list of table names that I want to make sure are closed before running the script
tname = { "TABLE1", "TABLE2", "TABLE3", "TABLE4" };
// loop to see if open tables match the name in the list above, then close them
// need to restart the i counter to i = 0 because it seems closing a table changes the 'i' number associated with the table
For( i = 1, i <= N Table(), i++,
If( N Rows (Loc( tname, Data Table(i) << Get Name ) ) > 0,
Close(Data Table(i), no save);
i = 0;
)
);
回复:如何判断数据表是否已经打开?我将使用 Try() 函数来简化关闭
</CODE></PRE>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
tname = {"TABLE1", "TABLE2", "TABLE3", "TABLE4"};
For Each( {dt}, tname,
Try( Close( data table( dt ), nosave ) )
);