한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한이면 통과제한이 있는 테이블(제한)이 있습니다.테이블 열은 제품, 구성요소 A, 구성요소 B입니다. 각 구성요소 아래에는 한계가 있습니다.예시 제품, 알루미늄, 아연
퍼드 .24 .50
각 행에 결과가 있는 PASS/FAIL 열과 알루미늄 열 및 아연 열이 있는 또 다른 테이블 FG Metals가 있습니다.예 PASS/FAIL, 알루미늄, 아연
.09 .1
dt(FG 금속) 알루미늄 .09 결과와 dt(제한) 알루미늄 .24 결과를 비교해야 합니다. 결과가 제한보다 작으면 PASS/FAIL 열에 Pass를 입력하고 그렇지 않으면 FAIL을 입력합니다.
바라건대 나는 이것을 충분히 설명했습니다.질문이 있으면 알려주세요.
웨인
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우그것은 효과가 있었다.
감사합니다.
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우코드 줄을 다음으로 변경하십시오.
<FONT style="background-color: #ffffff;">Column( colNamesList[theColumn] || " PASS/Fail" ) << delete</FONT> property("formula");
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우안녕하세요 TxNelson님,
스크립트에서 주석 처리하면 -- Column( colNamesList[theColumn] || " PASS/Fail" ) << 수식 삭제; 그것은 잘 실행되고 있습니다.
</CODE></P><P><CODE class=" language-jsl">그냥 쿼리입니다. 열을 가져오기 전에도 열 수식을 삭제하지 않습니까? 칼럼이 완성되면
일단 LSL과 USL의 값을 대체하고 For 루프의 다음 라인에서 하고 있습니까?
</CODE></P><PRE><CODE class=" language-jsl">colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0, /*show(colNamesList[theColumn] || " PASS/Fail"), Wait (1); */
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
/* Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;*/
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우대기 시간이 무엇이든간에 동일한 오류를 통해 첫 번째 열만 평가합니다. 그러나 두 부분으로 나누어 실행하면 괜찮습니다! 왜 그런지 모르겠어?
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우dt << 수식을 다시 실행합니다. 그리고 기다려 (0) - 그들 중 누구도 나를 위해 일하지 않습니다. 하지만 예, 코드를 두 번 실행하면 잘 작동합니다.
다른 제안이 있습니까?
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우추가할 수 있습니다
wait(0);
또는
dt << rerun formulas;
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우안녕하세요, 예, 사양 제한을 먼저 관리한 다음 나머지 부분을 관리할 때까지 코드를 실행하면 작동합니다.
show(colNamesList[theColumn] || " 통과/실패"); 차이가 없습니다. 이 줄을 추가한 후에도 코드가 한 번에 실행되지 않습니다.
사양 제한 관리 부분을 먼저 평가한 다음 더 이동하거나 for 루프에 들어가기 전에 잠시(예: 2초) 추천할 수 있는 방법이 있습니까?
감사.
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우사양 제한 관리는 아래 코드가 처리되기 전에 완료되지 않을 수 있습니다.사양 제한 관리를 통해 실행해 보십시오.그런 다음 완료되면 나머지 코드를 실행합니다.
또한 추가
show(colNamesList[theColumn] || " PASS/Fail");
19행 직전
Eval(
그런 다음 코드가 불평하는 이름을 살펴보십시오.
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우안녕,
나는 그 검사를 수행했고 LSL과 USL이 모두 사양 테이블에 있어야 한다는 것을 확인했습니다. 사실, 나는 또한 For 루프를 시작합니다 -- Column = 10 열 10번째부터 테이블에 사양 제한이 있다는 것을 알았지만 Is Empty 문으로 처리해야 합니다.
아무것도 작동하지 않았습니다.
감사.
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우문제가 있는 코드 줄은
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
오류 문은 참조되는 열을 찾을 수 없다고 말합니다.참조되는 열은 바로 전에 문에서 생성되어야 합니다.
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
이 명령문이 작동하기 위해 필요한 것은 수식에서 참조되는 열에 대해 LSL과 USL이 모두 존재한다는 것입니다.나는 이것이 문제라고 생각합니다.LSL과 USL이 모두 존재하는지 확인합니다.
귀하의 질문에 대해
" 또한 LSL과 같은 사양 제한에서 "__"를 사용하는 이유는 무엇입니까? "
이것은 JMP 요구 사항이 아닙니다.Substitute() 함수에는 JMP가 대체에 사용할 일치하는 값 쌍이 있어야 한다는 요구 사항이 있습니다.코드를 명확하게 하기 위해 일치하는 값 전후에 "__"를 사용합니다.나는 또한 일치하는 쌍의 이름에 의미를 부여합니다.그리고 이 경우 Substitution() 함수는 LSL, 참조 Col 및 USL을 대체하므로 내 규칙에 따라 __LSL__, __col__ 및 __USL__을 사용합니다.
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우안녕하세요 넬슨입니다.
금요일에 보내주신 스크립트에서 다음 오류가 발생합니다. 어떤 도움
또한 LSL과 같은 사양 제한에서 "__"를 사용하는 이유는 무엇입니까? jmp 스크립트 지침에서 답을 찾으려고했지만 많이 이해할 수 없었습니다.
감사.

Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우안녕하세요, 감사합니다.
네, 그게 바로 (읽기 스크립팅 가이드 ) 나는 지금 하루를 보내고 있습니다. 
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우귀하의 요청에 대한 해결책을 아래에 두었습니다.그러나 시간을 내어 Scripting Guide를 읽고 내가 제공한 내용을 이해했는지 확인하고 다른 토론에서 제공되는 JSL을 이해하는 데 도움을 주어야 합니다.
names default to here(1);
dtspecs = Data Table ("Specs_Limits");
dt = Data Table ("Table_A");
Loadlimit = dt << Manage Spec Limits( Y( :BVIA_RES, :COILVIA_RES, :RDR_RES, :TAD_RES,
:WELGL_RES), Load from Limits Table("Specs_Limits.jmp"), Save to Column Properties (1) );
Loadlimit << close window;
colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0,
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우안녕하세요 TxNelson입니다.
비슷한 솔루션이 필요하고 귀하가 제공한 솔루션을 따르려고 했지만 결과를 얻을 수 없었습니다. 저를 좀 도와 주실 수 있나요 --
두 개의 테이블이 있습니다. 하나는 데이터 테이블이고 다른 하나는 사양 테이블입니다. 기본 테이블의 데이터를 사양 테이블의 사양과 비교하고 1(통과) 및 0(실패)으로 새 열에 넣어야 합니다.
도움이 되셨나요?
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우짐,
잘 작동합니다.도움을 주셔서 다시 한 번 감사드립니다.
웨인
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우
- 한계 파일의 다양한 금속 열은 숫자 열이어야 합니다.
- 금속 데이터 테이블의 합격/불합격 열은 문자로 정의해야 합니다.
다음은 제공한 예제 데이터와 위의 변경 사항을 기반으로 작동하는 스크립트입니다.이 코드는 한계 데이터 테이블을 사용하여 테스트할 금속을 결정합니다.
Names Default To Here( 1 );
dtLimits = Data Table( "Limits sample (1)" );
dtMetals = Data Table( "FG Sample (1)" );
// Get the names of the columns with the metals data in them
metalsColNames = dtLimits << get column names( string, numeric );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( N Rows( dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ) ) > 0,
theProductRow = (dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ))[1];
result = "Pass";
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[theProductRow];
col = Column( dtMetals, metalsColNames[theColumn] );
If( col[theRow] < target,
result = "Fail"
);
);
dtMetals:Name( "Pass/Fail" )[theRow] = result;
)
);Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우금속이 실패하면 샘플이 실패합니다. 모든 금속이 통과하면 샘플이 통과합니다.Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우금속 데이터 테이블의 행에 있는 제품에 대해 한계 테이블에서 올바른 행을 찾기만 하면 됩니다. 그렇게 할 수 있도록 스크립트를 수정해 드리겠습니다. 하지만 금속 데이터 테이블에 하나 이상의 합격/불합격 열이 있어야 하지 않습니까? 각 금속은 통과하거나 실패할 수 있기 때문입니다. ...또는 금속이 하나라도 실패하면 실패이지만 모두 통과하면 행이 통과한다는 말씀인가요????Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우짐,
내 제한 파일에 여러 제품이 있습니다. Fudd with 알루미늄 및 한계 .05 다음 Miracle with 알루미늄 및 한계 .02. 제한 파일의 각 제품은 제품 열 아래에 있습니다. 예시 제품, 알루미늄, 아연
퍼드 .5 .1
기적 .2 .5
제품 취급 방법을 알려주세요.
문안 인사,
웨인
Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우여기 당신이 원하는 것을 수행한다고 생각하는 스크립트가 있습니다.

Names Default To Here( 1 );
// Create example data tables
dtLimits = New Table( "Limits",
New Column( "Product", character, values( {"Fudd"} ) ),
New Column( "Aluminum", values( {.24} ) ),
New Column( "Zinc", values( {.50} ) )
);
dtMetals = New Table( "FG Metals",
add rows( 10 ),
New Column( "Pass/Fail Aluminum", character ),
New Column( "Pass/Fail Zinc", character ),
New Column( "Aluminum", formula( Random Uniform( 0, 1 ) ) ),
New Column( "Zinc", formula( Random Uniform( 0, 1 ) ) )
);
// Get the names of the columns with the metals data in them
metalsColNames = dtMetals << get column names( striing, numeric );
// Loop across the columns and down the rows and calculate the pass/fail
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[1];
col = Column( dtMetals, metalsColNames[theColumn] );
passFail = Column( dtMetals, " Pass/Fail " || metalsColNames[theColumn] );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( col[theRow] < target,
passFail[theRow] = "Fail",
passFail[theRow] = "Pass"
)
);
);Re: 한 테이블의 결과를 다른 테이블의 사양 제한과 비교해야 합니다. 결과 < 제한 일 경우샘플 파일을 첨부했습니다.