这太简单了,无法投入生产车间,但应该给出一些可能的想法,你可以如何解决这个问题:
Names Default To Here(1);
dt = New Table("example",
Add Rows(4),
New Column("Batch", Numeric, Ordinal, Values([1,2,3,4]));
);
recode_batches = Expr(
aa_recode = Associative Array(ncb_batch << get, sceb_lot << get);
dt << New Column("Lot Number", Character, Nominal, << Set Each Value(
aa_recode[:Batch];
));
);
init_batches = Associative Array(:Batch) << get keys;
nw = New Window("Input",
H List Box(
Table Box(
ncb_batch = Number Col Box("Batch", init_batches),
sceb_lot = String Col Edit Box("Lot Number", Repeat({""}, N Items(init_batches))),
),
Panel Box("Actions",
Lineup Box(N Col(2),
Button Box("OK",
recode_batches;
nw << close window;
),
Button Box("Cancel", nw << close window)
)
)
)
);
脚本指南 (脚本指南 > 显示树 > 构建自定义窗口 > 新窗口的构造函数) 和 Scripting Index 有很多关于如何构建新 Windows 的不同选项:
在构建这样的东西时,还有很多事情需要考虑。 下面是几个需要思考的问题:
- 是否应要求用户逐一填写批次 -> 批次信息? 或者一次全部(比如我的例子)?
- 可能存在哪些类型的错误情况?
- 如果需要记录,什么类型?
- 窗口是否应该是模态的(在按下 OK/Cancel 之前阻止使用 JMP)?
- 创建新列后会做什么?
- 这将如何共享? 加载项,网络驱动器中的脚本?
- 将来如何修改?
你好,
我希望根据用户输入使用 JSL 重新编码列(创建新列)。我有从批处理过程中获得的数据,我们可以根据时间识别每个批次,因此我可以清理数据,使其看起来像这样:

然后,我想做的是提示用户输入,在本例中是与每个批次对应的批号,然后使用与批号对应的批号重新编码新列。 决赛桌看起来像这样:

还有一个额外的警告:活动中的批次数量是可变的,从 1 到 16 不等。该脚本的目标是在批次活动完成后可以在制造车间运行,因此希望使其用户友好且易于运行。有任何想法吗?