안녕,
스크립트에 문제가 있습니다.
루프를 사용하려고 하면 빈 열이 표시됩니다.
루프를 사용하지 않으면 작동합니다.
col = dt << get column names;
For(i = 1, i <= N Items(col), i++,
c = "c" || Char(i);
Eval(Parse(Eval Insert("^c^= column(dt,i)<<GET values=""></GET>New Column( "Flag",<BR /> Character,<BR /> Nominal,<BR /> Formula(for(i=1,i<3,i++,<BR /> if(c2[i]>:LSL[i],"Pass","Failed"))));<BR />
먼저 말씀드리고 싶은 것은 이것이 XY 문제 . 그러나 플래그가 열의 동적 수를 확인하도록 하는 방법에 대한 질문에 대답하기 위해 수식 자체 외부에서 수식을 작성합니다.
names default to here(1);
dt = New Table( "Test",
Add Rows( 5 ),
Set Header Height( 46 ),
New Column( "System",
Character,
"Nominal",
Set Values( {"F_T_F_S", "F_T_F_R", "F_T_F_T", "F_T_F_U", "F_T_F_V"} )
),
New Column( "01/09/2019",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [500, 450, 900, 358, 500] )
),
New Column( "01/10/2019",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [666, 120, 280, 852, 456] )
),
New Column( "01/11/2019",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [520, 500, 450, 520, 520] )
),
New Column( "01/12/2019",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [450, 666, 120, 450, 450] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [500, 800, 800, 0, 0] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [980, 1100, 1100, 3700, 3700] )
)
);
//build the formula outside of the formula itself
ANDExpr = Expr(AND()); // we're going to throw all relavent columns into this AND Expression
for(i=2, i<=5, i++,
col = Column(i);
insert into(ANDExpr,
EvalExpr(:LSL < Expr(col)[] < :USL) // for each column check that it's between LSL & USL
);
);
f = EvalExpr(
if(Expr(nameexpr(ANDExpr)),
"Pass",
"Fail"
)
);
show(nameexpr(f));
Eval(EvalExpr(dt << New Column("Flag", formula(Expr(nameexpr(f)))) ));
숫자 대신 이름 목록을 작성할 수도 있습니다.
답변 감사합니다.
* 귀하의 스크립트에 따르면 제대로 작동하지 않습니다. 루프 후에 인쇄하고 있기 때문에 모든 행에서 동일한 대답을 얻습니다.
* 큰 이슈는 -
무엇을 할 것을 제안합니까?
LSL과 USL 사이의 모든 행(모든 열까지)을 확인해야 합니다. 하지만 문제는 열 이름이 항상 변경된다는 것입니다.

합격/불합격이 마지막으로 계산된 값으로 반환되지 않는 것 같습니다.다음 조정으로 문제를 해결할 수 있습니다.
col = dt << get column names;
For( i = 1, i <= N Items( col ), i++,
c = "c" || Char( i );
Eval( Parse( Eval Insert( "^c^= column(dt,i)<<GET values=""> :LSL[i],
x = "Pass",
x = "Failed"
)
);
x;
)
);</GET>
그러나 더 큰 문제가 있습니다. 공식이 작동하려면 "c2"라는 메모리 변수가 있어야 합니다.해당 변수의 값을 변경하거나 삭제하면 수식은 변경된 값을 사용하여 수식을 계산하거나 삭제된 경우 수식이 더 이상 작동하지 않습니다.