這對於製造車間來說太簡單了,但應該給出一些可能的想法,你可以如何解決這個問題:
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 不等。該腳本的目標是在批次活動完成後可以在製造車間運行,因此希望使其用戶友好且易於運行。有任何想法嗎?