Probleme bei der Bearbeitung tabellarischer TabellenIch verstehe nicht ganz, warum ich Probleme habe, Spalten aus einer Tabelle zu ändern, die aus einem tabellarischen Bericht erstellt wurden. Ich habe die Tabellen und Skripts für Ihre Referenzen angehängt. Ich versuche, eine Tabelle zu erstellen, die unserer aktuellen Berichtstabelle entspricht.
Vielen Dank für Ihre Hilfe
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;
Re: Problem bei der Bearbeitung tabellarischer TabellenNur die Syntax zu bekommen, bringt mich um. Danke, dass du darauf hingewiesen hast .. Da ich immer noch lerne, wie man in JSL codiert, habe ich definitiv beide Formus, den Scripting Guide und den Scripting Index, um alle Dinge zu suchen. Ich habe das vermisst = zu << ..Re: Problem bei der Bearbeitung tabellarischer TabellenDas dtFinalYield soll nur dtFinal sein .. Wenn ich diesem Forum Skripte anhebe, muss ich alles umbenennen und ich habe dieses verpasst. Entschuldigen Sie.
Ich sehe die Probleme mit dem "=" anstelle des "<<". Ich bin mir nicht sicher, warum ich das gemacht habe ..Re: Problem bei der Bearbeitung tabellarischer TabellenNachfolgend finden Sie meine Rezension zu Ihrem Skript. Die Probleme scheinen den Unterschied zwischen dem Verwenden von "=" und dem Verwenden von "<<" nicht zu verstehen, und auch Sie scheinen vorsichtiger zu sein, was sich manchmal bezieht JSL nicht ganz zu verstehen. Ich empfehle Ihnen dringend, den Scripting Guide zu lesen!
Hilfe ==> Bücher ==> Anleitung zur Skripterstellung
Hier ist mein kommentiertes Skript
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;
Re: Problem bei der Bearbeitung tabellarischer TabellenBei falscher Syntax wurden mehrere Namenskollisionen erstellt:
dtFinal = tab << Make Into Data Table;
Wait( 1 );
dtFinal << set name( " Yield Report" );
dtFinal = New Column( "Mode",
Wie von Ihrem Skript erwartet, ist dtFinal die Tabellenreferenz, jedoch weist die Syntax dtFinal = New Column () die neue Spalte der Referenz auf dtFinal zu. Die Syntax sollte dtFinal << New Column () sein. Am Ende Ihres Skripts verweisen Sie auf dtFinalyield. Es gibt keine solche Tabelle.
Sie sollten auch die Syntax für JMP-If () - Funktionen nachschlagen. Sie müssen die ifs nicht verschachteln:
If (cond1, result1, cond2, result2, ... condk, result k, sonst);
Re: Problem bei der Bearbeitung tabellarischer TabellenIch führe dein Skript ohne Probleme mit deinen Daten aus ....
erstellter tabellarischer Bericht und zugehörige Tabelle .... und ist auch möglich, solche Tabelle zu ändern ....
Kannst du besser erklären, welche Art von Ärger du hast
Ciao
Gianpaolo