Problemi nella manipolazione delle tabelle tabulateNon capisco perché sto avendo problemi a manipolare le colonne da una tabella creata da un report tabulato. Ho allegato le tabelle e gli script per i tuoi riferimenti. Sto cercando di creare una tabella che corrisponda alla nostra tabella dei rapporti corrente.
Sempre, grazie per il tuo aiuto
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;
Ri: Trouble Manipulating Tabulated TabelleSolo ottenere la sintassi mi sta uccidendo .. Grazie per averlo indicato. Dal momento che sto ancora imparando come codificare in JSL, ho sicuramente entrambi questi formus, la guida di scripting e l'indice di scripting tutti aperti per cercare come fare le cose .. Mi mancava quello = a << ..Ri: Trouble Manipulating Tabulated TabelleIl dtFinalYield dovrebbe essere solo dtFinal .. Quando allego gli script su questo forum, devo rinominare tutto e ho perso quello .. Mie scuse.
Vedo i problemi con il segno '=' invece del '<<' Non sono sicuro del motivo per cui lo stavo facendo ..Ri: Trouble Manipulating Tabulated TabelleDi seguito è la mia recensione del tuo script ...... i problemi sembrano non capire la differenza tra quando usare "=" e quando usare "<<", e anche tu sembri essere più attento, che a volte si riferisce per non capire completamente JSL. Quindi suggerisco caldamente di leggere la guida di scripting!
Guida ==> Libri ==> Guida di scripting
Ecco il mio script annotato
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;
Ri: Trouble Manipulating Tabulated TabelleLa sintassi errata ha creato diverse collisioni di nomi:
dtFinal = tab << Make Into Data Table;
Wait( 1 );
dtFinal << set name( " Yield Report" );
dtFinal = New Column( "Mode",
Come scritto, lo script si aspetta che dtFinal sia il riferimento alla tabella, tuttavia la sintassi dtFinal = New Column () sta assegnando la nuova colonna al riferimento dtFinal. La sintassi dovrebbe essere dtFinal << New Column () anche alla fine del tuo script fai riferimento a dtFinalyield, non esiste una tabella di questo tipo.
Inoltre dovresti cercare la sintassi per le funzioni JMP If (). Non è necessario annidare i if:
Se (cond1, result1, cond2, result2, ... condk, risultato k, else);
Ri: Trouble Manipulating Tabulated TabelleCorro il tuo script con i tuoi dati senza problemi ....
creato tabulate report e tabella correlata .... ed è anche possibile modificare tale tabella ....
puoi spiegare meglio che tipo di problemi hai
Ciao
Gianpaolo