关闭除变量名称列表之外的所有数据表今天,我尝试关闭除选定数量的数据表之外的所有数据表,因为使用数据表名称变量运行重复过程。我有三张桌子。一个是收集结果,一个是收集第一个表的无效结果,一个是用户打开脚本以了解要使用哪些 ID 值进行比较。我发现了一个可以关闭表的讨论(它已包含在我的脚本中),但它在表名称列表中使用带引号的文本。由于我的用户将为第三个表的每次迭代选择不同的数据表,因此如何使用数据表名称变量将其包含在列表中并在处理结束时将其保持打开状态?
DontClose = {CompareTable, CollectionTable, IDTable}; // Example names of tables you want to leave open
//CompareTable = "Validation Table"
//Collection Table = "Unmatched Values"
//IDTable = could be anything but I want to leave this open once the processing loop is completed
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
print( Data Table(i) << Get Name ) ;
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);回复:关闭除变量名称列表之外的所有数据表这可以工作,但这接近于在每个表的使用完成后为其生成一个 Close() 语句。 我试图使用一些更优雅、线条更少的东西。 我尝试过的另一个类似选项是将所有表名放在一个列表中,并有一个保留列表进行比较,问题是用户选择了必须保持打开状态的三个表之一,因此每次使用都会发生变化。 这是我使用别名表名的唯一原因。 一旦我与某人分享此信息,他们就会更改脚本所在的表名称,因此我宁愿不在不需要的地方硬编码数据表名称。 这真是一个谜! 感谢您的回复!回复:关闭除变量名称列表之外的所有数据表我无法发布整个脚本。 它访问专有服务器,我需要花费大量时间来创建匿名版本。 但你让我觉得我没有考虑到这一点,这就是它被挂断的原因。 我将测试我的理论并报告!
谢谢你!回复:关闭除变量名称列表之外的所有数据表既然您生成了所有要销毁的数据表,为什么不在创建时将每个表引用插入到列表中呢? 然后,您可以在需要关闭列表时迭代列表。
回复:关闭除变量名称列表之外的所有数据表你能发布你的脚本吗?
关闭已链接汇总表的表将自动关闭汇总表。
回复:关闭除变量名称列表之外的所有数据表天啊! 我说得太早了。 我使用此脚本测试了打开表和关闭表。
我的脚本所做的是打开两个表,需要将其保持打开状态才能完全运行脚本。 一个是不相等的比较目标,另一个包含 ID 列表(用户选择的)。 然后它从服务器提取数据,运行大量摘要、转置和其他数据操作,将结果复制到脚本所在的表中,并将差异复制到目标表中(两者都需要保持打开状态),然后关闭所有摘要表和在继续下一个 ID 之前从服务器生成的表。
我不断收到这样的错误:
在“数据表”的访问或评估中找不到数据表{28},数据表/*###*/(i)
因为桌号丢失了?回复:关闭除变量名称列表之外的所有数据表@Wendy_Murphrey这就是门票!就像我需要的那样工作。由于该脚本可以打开或生成数百个表,因此这非常适合我的需求。
谢谢你,谢谢你,谢谢你!我每天都在 JSL 学到新东西!
回复:关闭除变量名称列表之外的所有数据表@guillaumebugnon我发现所有表都需要该变量集。我正在编写的脚本会打开并生成大量表格,因此这将添加一个步骤,我认为最好将其用于不太激烈的目的。我最终希望做的是拥有一个 ID 列表(可能超过 200 个),并让脚本运行一个进程来为每个 ID 生成至少 75 个摘要。虽然这可行,但温迪·墨菲的解决方案似乎非常适合我的应用。
感谢您花时间帮助我解决困境!
回复:关闭除变量名称列表之外的所有数据表这是一种允许您使用数据表引用的方法:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt3 = Open( Pick File( "Select File", "$DOCUMENTS" ) );
dontClose = Eval List( {dt, dt2, dt3} );
Show( dontClose );
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
If( Contains( DontClose, Data Table( i ) ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);
希望有帮助!
回复:关闭除变量名称列表之外的所有数据表你好,
您还可以在每个 jmp 数据表上设置一个表变量:
dt << Set Table Variable("ToClose","N");然后您可以循环并检查该值:
For( i = N Table(), i > 0, i--,
vtoclose = Data Table(i) << Get Table Variable ("ToClose") ;
If ( Contains(vtoclose,"Y") >=1 ,
Close(Data Table(i),NoSave),
print("ToClose is not set to Y : do not close")
);
);