목록의 값과 일치하는 행 선택더 복잡한 스크립트에 문제가 있었고 문제를 해결하기 위해 간단한 테스트 스크립트를 작성했지만 무엇이 잘못되었는지 파악할 수 없습니다. 아마도 눈에 띄게 분명할 것입니다. 그러나 나는 그것을 알아차리기에는 너무 오랫동안 그것을 보았습니다. :Disposition Type, :NC Code, :NC Qty를 사용하여 테이블을 생성합니다. 원본 스크립트는 사용자 입력을 사용하여 코드 목록을 생성하지만 여기서는 목록을 미리 정의했습니다. :NC 코드가 목록의 코드와 일치하는 경우 :NC 수량의 값을 복사하는 코드 목록에 나열된 각 코드에 대한 열을 만들고 싶습니다. 열 이름을 지정하는 코드[c]는 인식되지만 열 수식에서는 인식되지 않습니다. 또한 수식에서 == 대신 Contains를 사용해 보았지만 별 차이가 없는 것 같습니다.
New Table( "NC Qty Col Test",
Add Rows( 5 ),
New Column( "Disposition Type",
Character,
"Nominal",
Set Values(
{"SCRAP-R", "SCRAP-DNR", "DEVIATE-MATERIAL", "DEVIATE-PROCESS",
"DEVIATE-PRODUCT"}
)
),
New Column( "NC Code",
Character,
"Nominal",
Set Values( {"007", "014", "020", "007", "008"} )
),
New Column( "NC Qty",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5] )
)
);
codes = {"007", "014"};
For(c=1, c<=NItems(codes), c++,
New Column("Code " || codes[c] || " NC Qty", Numeric, Continuous, Formula(If(:NC Code==codes[c], :NC Qty, 0 )));
);Re: 목록의 값과 일치하는 행을 선택하세요.문제는 첫 번째 경우와 동일하다.코드[c]는 수식으로 해석되지 않습니다. 코드[c]의 실제 값을 공식에 대체해야 합니다.
For( c = 1, c <= N Items( codes ), c++,
Eval(
Substitute(
Expr(
CF << New Column( "Code " || codes[c] || " Cost",
Numeric,
Continuous,
Format( Currency ),
Formula(
If(
And( :NC Code == __code__, :Disposition Type == "SCRAP-R" ),
:NC Qty with Zeros * :Total Cost,
And( :NC Code == __code__, :Disposition Type == "SCRAP-DNR" ),
:NC Qty with Zeros * :Total Cost,
And( :NC Code == __code__, :Disposition Type == "REWORK" ), 0,
And( :NC Code == __code__, :Disposition Type == "DEVIATE-MATERIAL" ), 0,
And( :NC Code == __code__, :Disposition Type == "DEVIATE-PROCESS" ), 0,
And( :NC Code == __code__, :Disposition Type == "DEVIATE-PRODUCT" ), 0,
0
)
)
)
),
Expr( __code__ ), codes[c]
)
)
);Re: 목록의 값과 일치하는 행을 선택하세요.나는 제안된 솔루션을 사용하여 원래 질문을 해결할 수 있었고 그것은 의미가 있는 것 같았습니다. 그러나 목록의 변수 값을 기반으로 열을 생성하는 것과 매우 유사한 작업을 수행하는 동일한 대형 스크립트의 또 다른 부분이 있다는 것을 깨달았습니다. 내가 이해하지 못하는 것은 왜 하나는 작동하고 다른 하나는 작동하지 않는다는 것입니다. 다음은 스크립트의 다른 섹션입니다. 이 부분에는 SCRAP-R 및 SCRAP-DNR 처리 유형에만 적용되는 NC 코드와 관련된 비용이 있습니다. 이 비용은 총 비용 열에 나열됩니다.
For(c=1, c<=NItems(codes), c++,
CF<<NEW column=""></NEW>Re: 목록의 값과 일치하는 행을 선택하세요.제가 알아내는 데 도움을 주셔서 정말 감사합니다! 이러한 옵션 중 하나가 내 스크립트를 수정하는 데 유용할 것입니다!
Re: 목록의 값과 일치하는 행을 선택하세요.이건 좀 까다롭습니다.수식에서 변수를 사용하는 경우 수식 내에서 변수를 초기화해야 합니다.하지만 저는 공식을 사용하지 않고 해냈습니다.
dt = New Table( "NC Qty Col Test", Add Rows( 5 ),
New Column( "Disposition Type", Character, "Nominal",
Set Values(
{"SCRAP-R", "SCRAP-DNR", "DEVIATE-MATERIAL", "DEVIATE-PROCESS",
"DEVIATE-PRODUCT"}
)
),
New Column( "NC Code", Character, "Nominal",
Set Values( {"007", "014", "020", "007", "008"} )
),
New Column( "NC Qty", Numeric, "Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5] )
)
);
codes = {"007", "014"};
For(c = 1, c <= NItems(codes), c++,
dt << New Column("Code " || codes[c] || " NC Qty", numeric, "Continuous")
);
for (k = 1, k <= nitems(codes), k++,
r = dt << get rows where(:NC Code == codes[k]);
colname = "Code " || codes[k] || " NC Qty";
if (nrows(r) > 0,
for (i = 1, i <= nrows(r), i++,
one_row = r[i];
column(dt, colname)[one_row] = column(dt, "NC Qty")[one_row];
);
);
);
Re: 목록의 값과 일치하는 행을 선택하세요.문제는 "c" 값이 변경되고 수식 정의 내에서 정적이지 않다는 것입니다.따라서 코드가 수식에서 "codes[c]"라는 정적 값을 갖도록 강제해야 합니다.다음은 이를 수행하는 한 가지 방법입니다.
New Table( "NC Qty Col Test",
Add Rows( 5 ),
New Column( "Disposition Type",
Character,
"Nominal",
Set Values( {"SCRAP-R", "SCRAP-DNR", "DEVIATE-MATERIAL", "DEVIATE-PROCESS", "DEVIATE-PRODUCT"} )
),
New Column( "NC Code", Character, "Nominal", Set Values( {"007", "014", "020", "007", "008"} ) ),
New Column( "NC Qty", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 4, 5] ) )
);
codes = {"007", "014"};
For( c = 1, c <= N Items( codes ), c++,
Eval(
Substitute(
Expr(
New Column( "Code " || codes[c] || " NC Qty", Numeric, Continuous, Formula( If( :NC Code == __code__, :NC Qty, 0 ) ) )
),
Expr( __code__ ), codes[c]
)
)
);