Durchlaufen von Spalten [Range Check]Ich hätte gerne eine Anleitung zur Anwendung einer Bereichsüberprüfung basierend auf bereits aufgefüllten Spezifikationsgrenzen.
Dieser eine Test hat 87 Screening-Grenzwerte, und ich möchte eine Reichweitenprüfung durchführen, um die Festlegung von Spezifikationsgrenzwerten zu unterstützen.
Ich weiß, dass ich das Skript für das verwenden kann, was ich erreichen möchte, aber ich kann nicht herausfinden, wie ich den Range Check (LELE (16, 46)) anwenden kann.
Vielen Dank für Ihre Zeit
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
limrow = Try( (dtlim << get rows where( dtlim:SPEC_COL_NAMES == cols[i] ))[1], . );
If( Is Missing( limRow ) == 0,
specs = {LSL( . ), USL( . ), Target( . ), Show Limits( 1 )};
specs["LSL"] = dtlim:LSL[limrow];
specs["USL"] = dtlim:USL[limrow];
Column( dtsplitmeas, Char( cols[i] ) ) << set property( "spec limits", Eval( specs ) );
);
);
Re: Durchlaufen von Spalten [Range Check]Das funktioniert für mich. Ich habe den Versuch geändert, nur um zu überprüfen, ob Zeilen vorhanden sind, falls dies aus irgendeinem Grund fehlschlagen würde. Ich möchte nicht einfach Fehler ausgeben.
Names default to here(1);
dtsplitmeas = Data Table("sample data");
dtlim = Data Table("_ SPEC LIMITS_");
dtrange = Data Table( "_ RANGE CHECK_" );
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
limrow = dtlim << get rows where( dtlim:SPEC_COL_NAMES == cols[i] );
If( nrows(limrow),
specs = {LSL( . ), USL( . ), Target( . ), Show Limits( 1 )};
specs["LSL"] = dtlim:LSL[limrow[1]];
specs["USL"] = dtlim:USL[limrow[1]];
Column( dtsplitmeas, Char( cols[i] ) ) << set property( "spec limits", Eval( specs ) );
//this assumes that the spec_col_names are exactly the same in both tables
Eval(EvalExpr(
Column( dtsplitmeas, char(cols[i])) << Set Property("Range Check",
LELE(Expr(dtrange:rangeA[limrow[1]]), Expr(dtrange:rangeB[limrow[1]]))
)
));
);
);Re: Durchlaufen von Spalten [Range Check]Hier ist ein Beispiel, wie es geht:
Names Default To Here( 1 );
dtsplitmeas = Data Table( "sample data" );
dtrange = Data Table( "_ RANGE CHECK_" );
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
rangerow = Try( (dtrange << get rows where( dtrange:SPEC_COL_NAMES == cols[i] ))[1], . );
If( Is Missing( rangeRow ) == 0,
Eval(
Substitute(
Expr(
Column( dtsplitmeas, Char( cols[i] ) ) <<
Range Check( LELE( __low__, __high__ ) )
),
Expr( __low__ ), dtrange:rangeA[rangerow],
Expr( __high__ ), dtrange:rangeB[rangerow]
)
)
);
);Re: Durchlaufen von Spalten [Range Check]Sehr geschätzt. Ich werde es so schnell wie möglich versuchen.
D.
Re: Durchlaufen von Spalten [Range Check]Da die SPEC_COL_NAMES in jeder Tabelle gleich sind, können Sie einfach rangeA und rangeB zur gleichen Tabelle hinzufügen und sie zusätzlich zu den spec_limits von dort ziehen lassen?
Re: Durchlaufen von Spalten [Range Check]@txnelson
Vor einiger Zeit haben Sie mir ein tolles Dokument zur Verfügung gestellt, das verschiedene Spalten durchläuft, ein Journal erstellt, Diagramme erstellt und dieses Journal dann anfügt.
Ich möchte mit Control Charts dasselbe tun, aber 87 verschiedene Ausdrücke für eine Yaxis könnten gemacht werden. Unsere Tests werden immer ausführlicher und im Fall dieses ursprünglichen Beitrags habe ich 504 Screening-Bedingungen. 87 Testausgänge mit 417 berechneten Ausgängen.
Danke im Voraus
doDistrPlot = Function(
{dtsplitmeas, Yaxis },
Eval(
Substitute(
Expr(
gb = Control Chart Builder(
Size( 734, 854 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
Y( Eval( Yaxis )) // Is evaluated in the same manner as the limits and range check.
),
Chart( Position( 1 ), Limits( Sigma( "Moving Range" ) ) ),
Chart( Position( 2 ), Limits( Sigma( "Moving Range" ) ) )
)
)
)
);
(gb << Top Report )[Text Box( 1 )] << Delete;
Report( gb )[Outline Box( 1 )] << Set Title( Eval Insert( Yaxis ) );
);
cols = dtsplitmeas << get Column names( string );
jjr1 = New Window( "Journal Window", << Journal );
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
Yaxis = dtlim << Get Rows Where( dtlim:SPEC_COL_NAMES == cols[i] );
doDistrPlot( dtsplitmeas, Yaxis );
jjr1 << Append( Report( gb ) );
gb << Close Window;
);Re: Durchlaufen von Spalten [Range Check]Wenn Sie Ihre Funktion nur für einen Wert von Yaxis ausführen, erhalten Sie dann Ihre gewünschte Kontrollkarte? Ich vermute, dass es nicht geht. Sie haben eine Eval (Substitute (Expr ())) - Instanz, die nicht so aussieht, als würde sie funktionieren, da keine Ersetzungselemente angegeben sind.
Sie müssen die kleinen Schritte unternehmen, um die Funktion zum Laufen zu bringen, und dann anfangen, das Looping hinzuzufügen.
Aber zuerst denke ich, du musst viel Zeit damit verbringen, den Scripting Guide zu lesen
Hilfe ==> Bücher ==> Anleitung zur Skripterstellung
Re: Durchlaufen von Spalten [Range Check]Nochmals vielen Dank für Ihre Hilfe. Ich erhalte jedoch diese Fehlermeldung "Daten außerhalb des Bereichs für die Spalte 'RF_IN_4_LPF_THRU bis BM_A_OUT S21 Status 1 @ 10.25GHz' werden als fehlend angezeigt. Fortsetzen?
Ich erinnere mich, wie ich dieses Popup gesehen habe, als ich den Bereich manuell eingestellt habe ... Ist das passiert, als Sie es auf Ihrer Seite liefen?
Hinweis: Ich bekomme immer noch den Fehler ...