테이블 화 된 테이블 조작 문제나는 테이블 화 된 보고서에서 생성 된 표의 열을 조작하는 데 왜 문제가 있는지 이해하지 못합니다. 귀하의 참조를 위해 테이블과 스크립트를 첨부했습니다. 현재 보고서 테이블과 일치하는 테이블을 만들려고합니다.
항상 도와 줘서 고마워.
Names Default To Here(1);
dt = Current Data Table();
LotListSQLString = "Wafer_1";
tab = dt
<< Tabulate(
invisible,
Show Control Panel( 0 ),
Add Table(
Column Table(
Category Table,
Statistics(
N,
Name( "% of Total" )
)
),
Row Table(
Columns by Categories(
:Name( "test" ),
:Name( "[Rx] test1" ),
:Name( "[Rx] test2" ),
:Name( "[Rx] test3" ),
:Name( "[Tx] test1" ),
:Name( "[Tx] test2" ),
:Name( "[Tx] test3" ),
:Name( "test4" ),
:Name( "Composite" )
)
)
)
);
dtFinal = tab << Make Into Data Table;
Wait( 1 );
dtFinal << set name( " Yield Report" );
dtFinal = New Column( "Mode",
<< Formula(
If( (:Columns by Categories == "test" ), "-",
IF( :Columns by Categories == "[Rx] test1", "Rx",
IF( :Columns by Categories == "[Rx] test2", "Rx",
IF( :Columns by Categories == "[Rx] test3", "Rx",
IF( :Columns by Categories == "[Tx] test1", "Tx",
IF( :Columns by Categories == "[Tx] test2", "Tx",
IF( :Columns by Categories == "[Tx] test3", "Tx",
If( :Columns by Categories == "test4", "-"
)
)
)
)
)
)
)
)
)
);
Wait( 0 );
dtFinal = New Column( "TestName",
<< Formula(
If( (:Columns by Categories == "test" ), "test",
IF( :Columns by Categories == "[Rx] test1", "test1",
IF( :Columns by Categories == "[Rx] test2", "test2",
IF( :Columns by Categories == "[Rx] test3", "test3",
IF( :Columns by Categories == "[Tx] test1", "test1",
IF( :Columns by Categories == "[Tx] test2", "test2",
IF( :Columns by Categories == "[Tx] test3", "test3",
If( :Columns by Categories == "test4", "test4"
)
)
)
)
)
)
)
)
)
);
// ------------------------ BEGIN FORMATING TABLE FOR FINAL REPORTING
// Says Scriptable[] but won't delete
dtFinal << Delete Columns( {"N(Fail)", "% of Total(Fail)"} );
// Works Correctly
dtFinal = New Column( "wafer_number",
<< Formula(
LotListSQLString
)
);
// Says Scriptable[] but won't go to column and obviously doesn't move
dtFinal << Go To( "wafer_number" );
Wait ( 0.5 );
dtFinal << move selected Columns( To First );
dtFinal << clear Column selection;
// Works Correctly
dtFinal = Column( "Mode" ) << Delete Formula;
dtFinal = Column( "TestName" ) << Delete Formula;
// Says Scriptable[] but won't go to column and obviously doesn't move
dtFinal << Go To( :Mode );
Wait ( 1 );
dtFinal << move selected Columns( after( "wafer_number" ) );
dtFinal << Clear Column Selection;
// Says Scriptable[] but won't go to delete
dtFinal << Delete Columns( :Columns by Categories);
// Says Scriptable[] but won't go to delete
dtFinal << go to( :TestName );
Wait( 1 );
dtFinal << Move Selected Column( after( "name" ) );
dtFinal << clear Column selection;
// Works Correctly
lot = "XYZ";
part = New Column( "part_number" );
part << Set Formula( lot );
// Says Scriptable[] but won't go to column and obviously doesn't move
dtFinal << go to( :part_number );
Wait ( 1 );
dtFinal << Move Selected Column( after( "name" ) );
dtFinal << clear Column selection;
// Works Correctly
die = 334;
numdie = New Column( "NumDie" );
numdie << Set Formula( die );
// Says Scriptable[] but won't go to column and obviously doesn't move
dtFinal<< go to( :NumDie );
Wait ( 1 );
dtFinalYield<< move selected Columns( after( "part_number" ) );
dtFinalYield<< clear Column selection;
재 : 테이블 조작 테이블 문제그냥 구문을 받고 나를 죽이고 .. 그걸 지적 해 주셔서 고맙습니다. JSL에서 코딩하는 법을 배우는 중이므로이 형식, 스크립팅 가이드 및 스크립팅 인덱스를 모두 열어 모든 작업을 수행하는 방법을 찾아야합니다. 나는 그것을 놓쳤다. <<.재 : 테이블 조작 테이블 문제dtFinalYield는 단지 dtFinal이되어야합니다. 이 포럼에 스크립트를 첨부하면 모든 이름을 변경해야하며 그 중 하나를 놓쳤습니다. 사과드립니다.
나는 '='대신 '='기호를 사용하여 문제를 봅니다. 왜 내가 그 일을하는지 확신 할 수 없습니다.재 : 테이블 조작 테이블 문제아래는 스크립트에 대한 내 리뷰입니다. "="를 사용할 때와 "<<"을 사용할 때의 차이점을 이해하지 못하는 것처럼 보입니다. 또한주의가 필요할 수도 있습니다. JSL을 완전히 이해하지 못하는 것. 그래서 저는 여러분이 스크립팅 가이드를 읽으시기 바랍니다!
도움말 ==> 서적 ==> 스크립팅 가이드
여기에 주석이 달린 스크립트가 있습니다.
Names Default To Here(1);
dt = Current Data Table();
LotListSQLString = "Wafer_1";
tab = dt
<< Tabulate(
invisible,
Show Control Panel( 0 ),
Add Table(
Column Table(
Category Table,
Statistics(
N,
Name( "% of Total" )
)
),
Row Table(
Columns by Categories(
:Name( "test" ),
:Name( "[Rx] test1" ),
:Name( "[Rx] test2" ),
:Name( "[Rx] test3" ),
:Name( "[Tx] test1" ),
:Name( "[Tx] test2" ),
:Name( "[Tx] test3" ),
:Name( "test4" ),
:Name( "Composite" )
)
)
)
);
dtFinal = tab << Make Into Data Table;
Wait( 1 );
dtFinal << set name( " Yield Report" );
// changed from
// dtFinal = New Column( "Mode",
// to
dtFinal << New Column( "Mode", character,
// More efficient way to code the If()
Formula(
If(
:Columns by Categories == "test", "-",
:Columns by Categories == "[Rx] test1", "Rx",
:Columns by Categories == "[Rx] test2", "Rx",
:Columns by Categories == "[Rx] test3", "Rx",
:Columns by Categories == "[Tx] test1", "Tx",
:Columns by Categories == "[Tx] test2", "Tx",
:Columns by Categories == "[Tx] test3", "Tx",
:Columns by Categories == "test4", "-"
)
)
);
Wait( 0 );
// changed from
// dtFinal = New Column( "TestName",
// to
dtFinal << New Column( "TestName", character,
// More efficient way to code the If()
Formula(
If(
:Columns by Categories == "test", "test",
:Columns by Categories == "[Rx] test1", "test1",
:Columns by Categories == "[Rx] test2", "test2",
:Columns by Categories == "[Rx] test3", "test3",
:Columns by Categories == "[Tx] test1", "test1",
:Columns by Categories == "[Tx] test2", "test2",
:Columns by Categories == "[Tx] test3", "test3",
If( :Columns by Categories == "test4",
"test4"
)
)
)
);
// ------------------------ BEGIN FORMATING TABLE FOR FINAL REPORTING
// Says Scriptable[] but won't delete
// You had not used the proper syntax in the above step, so that dtFinal
// was changed from a data table pointer to pointer to column "TestName"
dtFinal << Delete Columns( {"N(Fail)", "% of Total(Fail)"} );
// Works Correctly
// changed from
// dtFinal = New Column( "wafer_number",
// to
dtFinal << New Column( "wafer_number", character,
<< Formula(
LotListSQLString
)
);
// Says Scriptable[] but won't go to column and obviously doesn't move
dtFinal << Go To( "wafer_number" );
Wait ( 0.5 );
dtFinal << move selected Columns( To First );
dtFinal << clear Column selection;
// Works Correctly
// Changed from
// dtFinal = Column( "Mode" ) << Delete Formula;
// to
dtFinal:Mode << Delete Formula;
// Changed from
// dtFinal = Column( "TestName" ) << Delete Formula;
// to
dtFinal:TestName << Delete Formula;
// Says Scriptable[] but won't go to column and obviously doesn't move
// With keeping dtFinal as a pointer to the data table this now works
dtFinal << Go To( :Mode );
// Wait ( 1 ); // not necessary wait
dtFinal << move selected Columns( after( "wafer_number" ) );
dtFinal << Clear Column Selection;
// Says Scriptable[] but won't go to delete
// With keeping dtFinal as a pointer to the data table this now works
dtFinal << Delete Columns( :Columns by Categories);
// Says Scriptable[] but won't go to delete
dtFinal << go to( :TestName );
//Wait( 1 );
// changed from
// dtFinal << Move Selected Column( after( "name" ) );
// to
dtFinal << Move Selected Column( after( :name("N(Pass)" ) ) );
dtFinal << clear Column selection;
// Works Correctly
// This form will not work, once you save the table and reopen it
// because the formula requires a variable named Lot
//lot = "XYZ";
//part = New Column( "part_number" );
//part << Set Formula( lot );
// here is a form that will work
dtFinal << New Column( "part_number", character, set each value("XYZ" ) );
// Says Scriptable[] but won't go to column and obviously doesn't move
dtFinal << go to( :part_number );
//Wait ( 1 );
// There is not a column named "name", therefore
// changed
// dtFinal << Move Selected Column( after( "name" ) );
// to
dtFinal << Move Selected Column( after( :name("N(Pass)" ) ) );
dtFinal << clear Column selection;
// Works Correctly
// This form will not work, once you save the table and reopen it
// because the formula requires a variable named die
//die = 334;
//numdie = New Column( "NumDie" );
//numdie << Set Formula( die );
dtFinal << New Column( "NumDie", set each value(334) );
// Says Scriptable[] but won't go to column and obviously doesn't move
dtFinal<< go to( :NumDie );
//Wait ( 1 );
// There is no pointer called dtFinalYield
// changed from
// dtFinalYield<< move selected Columns( after( "part_number" ) );
// dtFinalYield<< clear Column selection;
// to
dtFinal << move selected Columns( after( "part_number" ) );
dtFinal << clear Column selection;
재 : 테이블 조작 테이블 문제구문이 잘못되어 여러 개의 이름 충돌이 발생했습니다.
dtFinal = tab << Make Into Data Table;
Wait( 1 );
dtFinal << set name( " Yield Report" );
dtFinal = New Column( "Mode",
작성한 스크립트에서 dtFinal은 테이블 참조가 될 것으로 예상되지만 구문 dtFinal = New Column ()은 dtFinal을 참조하는 새 컬럼을 지정합니다. 구문은 dtFinal << New Column ()이어야합니다. dtFinalyield를 참조하는 스크립트의 끝 부분에도 해당 테이블이 없습니다.
또한 JMP If () 함수에 대한 구문을 찾아야합니다. if를 중첩 할 필요는 없습니다.
if (cond1, result1, cond2, result2, ... condk, result k, else);
재 : 테이블 조작 테이블 문제문제없이 데이터로 스크립트를 실행합니다 ....
작성된 테이블 보고서 및 관련 테이블 .... 또한 이러한 테이블을 수정할 수 있습니다 ....
어떤 종류의 문제가 더 잘 설명 할 수 있니?
차오
지안 파올로