你好,
我想提供一個窗口級別的參數或變量列表(例如從 excel 複製)並進一步傳遞此列表(例如通過單擊“確定”)以創建另一個 SQL 查詢列表。 我可以使用某種類型的列錶框(如下圖所示)來做到這一點嗎? 可以使用哪些其他方法來做到這一點? 此致。

幾個問題/想法讓你前進:
- 您是否希望該用戶從預先創建的列表中選擇感興趣的序列號? 你可以使用列錶框
- 您是否希望用戶能夠從某處複製粘貼序列號並將其轉換為 SQL 查詢? 您可以使用具有解析功能的文本編輯框。
- 可能是以上兩種? 我很可能會盡量避免這種情況,就好像用戶是從某個地方復制粘貼值一樣,他們可以在那裡選擇他們想要包含的內容。
- 你想使用模態嗎?
檢查腳本索引:模態(如何構建模態窗口)、列錶框、文本編輯框、連接項(如何將 JMP 列表轉換為字符串)
列錶框的快速示例,它將在 OK 按鈕下方設置文本框值,並在按下 OK 時將所選值打印為列表以進行記錄:
Names Default To Here(1);
serialList = {"a1", "b2", "c3", "d4"};
win2 = New Window("Example",
V List Box(
lb = List Box(serialList, width(200), nlines(6)),
Button Box("OK", Show(lb << get selected); tb << Set Text(char(lb << get selected))),
tb = Text Box("");
)
);

你好,
謝謝你的建議。 我希望能夠從某處複製序列號,然後使用解析函數進一步傳遞它們,因此選項 2 以及模式窗口。 我將嘗試使用文本編輯框。
此致
下面是一個例子。 創建函數(示例中的 parsePaste)來處理輸入並進行您想要的修改:刪除重複項、用某些內容替換行更改、刪除重複的分隔符... 按確定後,這將返回一個字符串,然後您可以修改返回的字符串以適應您的 SQL(以 Words() 和 Concat Items() 為例)。
Names Default To Here(1);
parsePaste = function({tempStr}, {Default Local},
tempStr = Regex(tempStr, "\r\n", ",", GLOBALREPLACE); //replace row changes with ,
tempStr = Substitute(tempStr, ",,", ","); //replace double ,, with one ,
tempStr = Regex(tempStr, ",$", "", GLOBALREPLACE); //remove , if last character
return(tempStr);
);
win2 = New Window("Example", << Modal,
V List Box(
Text Box("Add Serialnumbers:"),
teb = Text Edit Box("", << set width(200), << set nlines(3),
<< Set Function(Function({this},
this << set text(parsePaste(this << get text));
))
),
H List Box(
Button Box("OK", listStr = teb << get text),
Button Box("Cancel")
)
)
);
show(listStr);
temp = Words(listStr, ",");
temp = "'" || Concat Items(temp, "','") ||"'";
show(temp);