打开多个数据表<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />所以我想创建一个应用程序,它会提示用户指定一定数量的数据表,然后用户可以选择相应的表。 我还想向每个表添加列。 我对 jmp/jsl 还很陌生,但下面是我的脚本,当然它不起作用,非常感谢任何帮助;
新窗口("数据表数量",
<<莫代尔,
Text Box( "数据表数量" ),
变量框 = 数字编辑框(),
按钮框(“确定”),
按钮框(“取消”)
);
N = 变量框 << 获取;
For( i = 1, i <= N 项( dt ), i++,
dt = 打开()
名称默认为此处(1);
dt=当前数据表(i);
dt << 新列("ColumnA", 数字, 连续, 格式("最佳", 5));
dt << 新列("ColumnB", 数字, 连续, 格式("最佳", 5));
);
PS:我知道添加附加列的脚本必须以某种方式进入 For 循环,但如果我什至可以打开数据表,那么我如何添加列。
PM罗兹乔丹希勒@jmp克里斯·基希伯格CH场马克·贝利
回复:打开多个数据表哦,哇,这有效。 谢谢!!!
回复:打开多个数据表当然! 非常感谢你纠正我的错误,梅兰妮。 。 。
阅读此线程的任何人还应该注意(与代码中的注释相反)关键字“multiple”受到 OS/X 和 Windows 的尊重。
回复:打开多个数据表PickFile() 的多个参数是关键字,而不是布尔值。 尝试这个:
选择文件(
“选择多个文件之一” , // 迅速的
“$样本数据” , // 初始文件夹
{ “JMP 文件|jmp;jsl;jrn” , “所有文件|*” } , // 要应用的文件过滤器列表(被 OS/X 忽略)
1 , // 要应用的初始文件过滤器(上面列表中项目的索引)
0 , // 保存标志 - 指定“保存”或“打开”窗口。 分别设置值1或0。
空的() , // 默认文件
“多种的” // 多个 - 如果“保存标志”= 0,则使用值 1 允许打开多个文件(被 OS/X 忽略)
) ;
请注意,为了使用多个参数,必须指定前面的所有参数 - 例如,您不能省略 2 个标志和默认文件。
回复:打开多个数据表嗯。 我会询问研发部,因为感觉这应该可行。
如果可能的话,最好使用内置函数,但您始终可以执行以下操作:
名称默认到这里( 1 ) ;
目录=选择目录( “移动到包含您的文件的文件夹” , “$桌面” ) ;
西北=新窗户( “打开多个文件” ,
面板盒( “选择一个或多个文件” ,
磅=列表框(目录中的文件(目录)) ,
排队框( NCOL ( 2 ) ,
按钮盒( “好的” , OK脚本) ,
按钮盒( “取消” ,西北<<关闭窗口)
)
)
) ;
OK脚本=
表达式(
西北<<关闭窗口;
文件=磅<<获取选择;
为了( F = 1 , F <= N项(文件) , F ++,打开(目录|| “/” ||文件[ F ])) ;
) ;
回复:打开多个数据表谢谢伊恩,你真的很有帮助。 我测试了上面的代码,它也适用于 Windows。 我还能够编辑代码并将其合并到我的工作中。 但是,我一次只能打开一个文件。 根据您的解释,在“选择文件”功能中添加后一个 1 应该允许打开多个文件,但这在我的计算机上不起作用(顺便说一下,Windows)。有什么方法可以解决这个问题,以便我可以同时打开多个文件? 谢谢
回复:打开多个数据表现在我明白您的问题是关于选择要打开的文件。 。 。
看起来“PickFile()”可能已经足够灵活,可以满足您的要求(请参阅“帮助>脚本索引”)。
就它需要与操作系统交互而言,您可能会期望 Windows 和 OS/X 之间存在一些细微的差异,而这里似乎就是这种情况。 但不幸的是,我没有 Windows 机器来测试下面的代码(我还假设对于多个选择,“PickFile()”确实会返回一个列表):
名称默认为此处( 1 ) ;
// 使用 'PickFile()' 获取要打开的文件列表(仅限 Windows)
文件列表=
选择文件(
“选择多个文件之一” , // 迅速的
“$桌面” , // 初始文件夹
{ “JMP 文件|jmp;jsl;jrn” , “所有文件|*” } , // 要应用的文件过滤器列表(被 OS/X 忽略)
1 , // 要应用的初始文件过滤器(上面列表中项目的索引)
0 , // 保存标志 - 指定“保存”或“打开”窗口。 分别设置值1或0。
空的() , // 默认文件
1 // 多个 - 如果“保存标志”= 0,则使用值 1 允许打开多个文件(被 OS/X 忽略)
) ;
// 如果只选择单个文件,fileList将不是一个列表,所以我们需要自己构建它
如果( !是列表(文件列表) ,文件列表=评估列表({文件列表})) ;
// 打开文件并存储其对应的 JMP 表名称
表名= {} ;
为了( F = 1 , F <= N项(文件列表) , F ++,
dt =打开(文件列表[ F ]) ;
插入(表名, dt <<获取名称) ;
) ;
回复:打开多个数据表你好伊恩,
感谢您的反馈,我会尽力解释得更好。 我想要的脚本询问用户要打开的数据表的数量,然后提示用户选择与之前询问的数量相对应的要打开的表。算法如下所示:
- 运行脚本
- 系统会询问用户要打开多少个数据表(模态窗口将使事情变得更容易)例如:用户输入 say 3
- 然后,用户会被要求选择任意 3 个他喜欢的数据表
- 将“Column A”和“Column B”分别添加到 3 个数据表中
我希望这有助于更好地澄清问题。 再次感谢!
回复:打开多个数据表我认为您需要更详细地说明您所追求的内容。
假设第一步您希望允许从打开的表中进行选择(而不是选择要打开的表),然后看一下:
名称默认到这里( 1 ) ;
// 显示会话中打开的表,并让用户选择一些
开放表= {} ;
为了( t = 1 , t <=表格() , t ++,插入(开放表,数据表( t ) <<获取名称)) ;
西北=
新窗户( “选择您需要的表” ,
磅=列表框(开放表) ,
排队框( NCOL ( 2 ) ,按钮盒( “好的” ,好的脚本) ,按钮盒( “取消” ,西北<<关闭窗口))
) ;
// 对选定的表执行某些操作(在本例中,只需打印)
OK脚本=
表达式(
西北<<关闭窗口;
选定的表=磅<<获取选择;
清除日志() ;
如果( N项(选定的表) > 0 ,
为了( t = 1 , t <= N项(选定的表) , t ++,
打印( “桌子 ” ||选定的表[ t ] || “选定了。” )
) ,
打印( “没有选择桌子。” )
) ;
) ;