SelectWhere() 语句中的比较大家好,
我广泛搜索了这个网站,我认为这是一个简单的解决方案,但由于某种原因我无法让它工作,我已经坚持了两天。
在下面的脚本中,我询问用户他想选择特定列的哪一部分。例如,该列的值为 8。(该列的值可以为 1 到 8)。我想在该列中选择具有该值的行,并创建一个新的 dt,在其中仅使用数据表的这个子集创建特定的图形。
它创建子集表,其名称和我在文本框中填写的数字。它显示了我填写的数字,即 XNo = "8";但是 Select where (Column == XNO) 不起作用。它不会给我错误,它只是不选择特定的行或制作图表。它创建一个与我引用的数据表同名的新数据表。
如果我填写 Select where (column == "8") 或 Select where(column == 8) 它可以工作。我只是希望 8 是可变的,并且操作员可以自己填写它。
dt = 当前数据表();
col = 列(dt,"MILL_X");
col_name_list = dt << 获取列名( string );
rdata = New Window( "您想检查哪一部分?",
<
<
X = 文本编辑框( "哪一部分?" ),
文本框(“点击确定保存”),
按钮框(“确定”,
XNo = X << 获取文本),
按钮框(“取消”);
);
显示(X否); //显示给定的字符串,即如果我填写 8,它会显示 --> XNo = "8";
//根据列上的值选择所需的行
dt << 行选择(
Select where( :MILL_X == XNo ), // <--- 这不起作用,它选择整个 dt 而不是从列中选择的值。如果我填写 :MILL_X == 8 就可以了。但仅限于8号。
对话框(编辑(等于(源列(col))),保持对话框打开(0))
);
Subset( (选定行), 输出表名称( "X " || Char(ColletNo) || "检查" ) );
// 使用选定的行创建所需的图表
分配(
连续分布(
柱(:“Y(μm)”n),
过程能力( LSL( -15 ), 目标( 0 ), USL( 15 ) )
)
);
// 或者,您可以在此处进一步自定义图表
// 例如,添加附加元素或格式化选项
dt << 清除选择;
dt << 清除列选择;
自动化和脚本编写数据存取质量和工艺工程 回复:SelectWhere() 语句中的比较尝试将 XNo 转换为数字(Num(XNo) 或使用数字编辑框。您可能还需要稍微修改一下列引用(添加 [] 进行比较)。下面是使用 Big Class 表的示例,使用 12-17 之间的值测试
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Column(dt, "age");
col_name_list = dt << get column names(string);
rdata = New Window( "Which part do you want to check?",
<<MODAL> X号=“8”; //根据列 dt << SelectWhere(col[] == Num(XNo)) 上的值选择所需的行; dt_subset = dt << 子集(选定的行); dt << 清除选择;</MODAL>
如果允许特定值,您还可以将选择器修改为仅允许用户选择特定值,但首先要让此版本正常工作,然后考虑这些选项。
回复:SelectWhere() 语句中的比较这不是具体的解决方案,但我刚刚发现该列需要是有序的(或至少不是连续的)。现在我只需要以这样的方式创建它,我仍然可以获得所有其他列,而不仅仅是年龄列。当我有正确的修复时,我会更新,但谢谢你。我知道这是一些愚蠢的东西,不起作用。
回复:SelectWhere() 语句中的比较我不知道为什么它之前不起作用,因为我之前尝试过 Num() 语句以及 col[]。也许我没有同时做它们,我不知道,尝试了很多迭代,但它现在正在工作。甚至不需要将列更改为连续列。我之前在你的脚本中唯一没有尝试过的是“名称默认为此处(1);”线。