你好,
我想提供窗口级别的参数或变量列表(例如从 Excel 复制),并进一步传递该列表(例如通过单击“确定”)来为 SQL 查询创建另一个列表。 我可以使用某种类型的列表框(如下图所示)来做到这一点吗? 还可以使用哪些其他方法来做到这一点? 此致。

您好,抱歉回复晚了。 这正是我想要实现的。 非常感谢。 此致
下面是一个例子。 创建函数(示例中的 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);
你好,
谢谢你的建议。 我希望能够从某处复制序列号,然后使用解析功能进一步传递它们,因此选项 2 与模式窗口一起使用。 我将尝试使用文本编辑框。
此致
几个帮助您前进的问题/想法:
- 您是否希望用户从预先创建的列表中选择感兴趣的序列号? 您可以使用列表框
- 您希望用户能够从某处复制粘贴序列号并将其转换为 SQL 查询吗? 您可以使用具有解析功能的文本编辑框。
- 可能是以上两者? 我很可能会尝试避免这种情况,就好像用户从某个地方复制粘贴值一样,他们可以选择已经存在的内容来包含他们想要的内容。
- 您想使用模态吗?
检查脚本索引:模态(如何构建模态窗口)、列表框、文本编辑框、Concat Items(如何将 JMP 列表转换为字符串)
列表框的快速示例,它将在“确定”按钮下方设置文本框值,并在按下“确定”时将选定的值打印为要记录的列表:
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("");
)
);
