如何将列分配给列表?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />在JSL中,有一个列诊断函数,可以使用ColList函数将表中的列分配给列表。 运行脚本时,用户需要单击按钮才能进行分配。 它需要交互式用户输入。
Col_dlg = 列对话框(
标题(“变量赋值”),
::x = ColList("运行 ID", MinCol(1), MaxCol(1), Columns(:LOT)),
……
);
有没有一种方法可以编写脚本,以便可以将列分配给列表,而无需用户单击对话框窗口上的按钮(运行时不会显示对话框窗口)?
我试过:
::x = ColList("运行 ID(必需)", MinCol(1), MaxCol(1), Columns(:LOT));
::x = :LOT << 获取值;
::x = 列(dt,"很多");
全部失败了。 有什么线索吗?
回复:如何将列分配给列表?对不起,是我的错。 我的解释不清楚。 我喜欢做的是对某些列使用强大的全局变量分配来替换列诊断函数,这样就不需要用户交互式响应。 情况如下:
在我的主例程中,有一个列诊断,其中一些列被分配给一些全局变量,这些全局变量将在库中的许多现有函数中调用。 这些 lib 函数中使用了一些命令:
N_x = NItems(x);
Column(dt, Eval(x2)) << Set Property("行顺序级别", (1));
变异图(...)
双变量(..)
....
不允许更改这些库函数。 目前,使用 Column Diag 函数分配的全局变量运行良好,与现有的 lib 函数没有任何问题。 但是上面建议的所有尝试可能对某些命令有效,但对其他命令可能会出现错误。
希望我这次的解释很清楚:-)。 或者可能会增加更多混乱:-(。
约翰
回复:如何将列分配给列表?我在这里没有看到任何模仿 ColList 输出的具体原因,但您可以创建一个包含如下列的列表:
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
坳= {柱子( dt , “姓名” )} ;
柱子( dt ,坳) <<设置属性( “行顺序级别” , ( 1 )) ;
但对于您的示例,普通列变量更直接:
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
坳=柱子( dt , “姓名” ) ;
坳<<设置属性( “行顺序级别” , ( 1 )) ;
还有另一种基于列列表的方法:
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
:: X = ( dt <<获取列名())[ 1 ] ;
:: X <<设置属性( “行顺序级别” , ( 1 ) ) ;
回复:如何将列分配给列表?是的,通过使用
::x2 = Column(dt, "LOT") << 获取值;
将为我提供一个包含 Column LOT 下所有值的列表,但是这个 ::x2 的“行为”不会与使用 Column Diag 中的 ColList 函数分配的 ::x 完全相同。 例如,以下命令
Column(dt, Eval(x)) << Set Property("行顺序级别", (1));
使用 ColList 函数分配 ::x,但当我调用时会出现错误
Column(dt, Eval(x2)) << Set Property("行顺序级别", (1));
错误消息是:
“在访问或评估 'Column' 时找不到列,Column( dt, Eval( x ) )”
对于 ColList 函数分配的 ::x,Eval(x) 会给我“LOT”;
对于以这种方式分配的 ::x2,Eval(x) 将为我提供一个列表,其中包含 Column LOT 下的所有值。
我喜欢做的是:找到一种将列分配给列表的方法,完全像 ColList 函数一样,但没有带有对话框窗口的用户界面或用户交互式响应。 如果有人能给我提供 ColList 函数的代码,那就太好了!
回复:如何将列分配给列表?您的倒数第二次尝试应该有效,但可能包含 LOT 列的表不是当前表。以下语法都有效:
dt =打开( “$SAMPLE_DATA/Big Class.jmp” ) ;
x1 = :姓名<<获取值;
x2 =柱子( dt , “姓名” ) <<获取值;
确保设置了指向数据表的变量。例如:
dt =数据表( “我的很多” ) ; // 包含 LOT 列的表
:: X =柱子( dt , “很多” ) <<获取值;