Fehler: Die aktuelle Spalte konnte auf der Plattform nicht gefunden werdenIch erhalte eine seltsame Fehlermeldung, wenn ich einen Spaltenumschalter, einen Datenfilter und eine Zeilenstatus-Handlerfunktion kombiniere.
Das beigefügte Skript enthält ein vereinfachtes Beispiel (entschuldigen Sie, dass es immer noch recht lang ist). Zusammenfassend ist das Skript:
- Verwendet eine Datentabelle, die Spalten mit Spezifikationsgrenzen enthält (ich verwende „Halbleiterfähigkeit“ als Beispiel)
- Erstellt eine Tabelle mit einem Zusammenfassungsbericht zur Prozessfähigkeit
- Fügt der Tabelle eine Verteilungsausgabe und einen Spaltenumschalter hinzu
- Bereinigt die Tabelle und verknüpft den Spaltenumschalter mit der Verteilung
- Erstellt eine Zeilenänderungsfunktion, um Aktualisierungen der Prozessfähigkeitstabelle zu überwachen
- Wenn der Benutzer eine Zeile in der Tabelle auswählt, wird der Parameterspaltenname erfasst und an den Spaltenumschalter übergeben, der die Verteilungsplattformen ändert.
Dies funktioniert einwandfrei, bis die Quelldatentabelle gefiltert wird und unerwünschte Zeilen ausgeblendet und ausgeschlossen werden. Die Prozessfähigkeitstabelle wird in Ordnung aktualisiert, aber wenn ich dann einen neuen Parameter aus der Tabelle auswähle, wird diese Meldung zweimal (oder mehrmals) angezeigt:

Die Vertriebsplattform wird irgendwann aktualisiert. Wenn der Benutzer jedoch weiter filtert, erhalte ich möglicherweise die folgende Fehlermeldung:

Wenn ich das erhalte, scheint der Zeilenstatus-Handler völlig nicht mit der Tabelle verknüpft zu sein.
Ich wäre dankbar, wenn jemand eine Lösung oder eine bessere Möglichkeit vorschlagen könnte, das zu tun, was ich tue!
Ich verwende JMP 17.2 unter MacOS.
Datenexploration und -visualisierungBetreff: Fehler: Die aktuelle Spalte konnte auf der Plattform nicht gefunden werdenIch habe einige kleinere Änderungen vorgenommen *) – ich muss prüfen, was das Problem tatsächlich behoben hat – oder?
- Verwenden Sie den Spaltenumschalter des Verteilungsberichts und erhalten Sie einen Zugriff über die Berichtsebene
- definieren setUpTableSelect als Funktion mit 1 Argument, so dass sie direkt als Funktionsaufruf von verwendet werden kann Zeilenstatushandler erstellen
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
dt << clear column selection() << clear select();
dt << Data Filter(
Mode( Select( 0 ), Include( 1 ) ),
Add Filter( columns( :lot_id ), Display( :lot_id, N Items( 13 ) ) )
);
colList = {:NPN1, :PNP1, :PNP2, :NPN2, :PNP3};
Eval(
Eval Expr(
win1 = New Window( "Parametric Test Summary Report",
pc = dt << Process Capability(
Process Variables( Expr( colList ) ),
Moving Range Method( Average of Moving Ranges ),
Capability Box Plots( 0 ),
Within Sigma Summary Report( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Process Performance Plot( 0 ),
Automatic Recalc( 1 ),
SendToReport(
Dispatch(
{"Within Sigma Capability Summary Report"},
"",
TableBox,
{Sort By Column( 14, 1 )}
)
)
),
tb = Text Box(
" Parameter distribution will appear below here. Select a row to show distribution for that parameter. \!N",
<<SET wrap=""> 1,
Throw( "Only select a single row" ),
Show( col1 = dt << get selected columns() );
cs << set current( Char( col1[1] ) );
);
dt << clear column selection();
)
);
);
setUpTableSelect(1);
rs = dt << make row state handler( setUpTableSelect );</SET>
Betreff: Fehler: Die aktuelle Spalte konnte auf der Plattform nicht gefunden werdenHallo @matth1 ,
Ich bin mir nicht ganz sicher, warum das funktioniert, aber ich habe auch einige geringfügige Änderungen an Ihrem Code vorgenommen und den Link-Plattform-Aufruf außerhalb des setUpTableSelect-Aufrufs und innerhalb von Epxr() verschoben, das das neue Fenster enthält (aber nicht innerhalb des neuen Fensteraufrufs). . Dies scheint den Datenfilter beim Wechsel zwischen Chargen korrekt anzuwenden und Fehler zu vermeiden.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
dt << clear column selection() << clear select();
dt << Data Filter( Mode( Select( 0 ), Include( 1 ) ), Add Filter( columns( :lot_id ), Display( :lot_id, N Items( 13 ) ) ) );
colList = {:NPN1, :PNP1, :PNP2, :NPN2, :PNP3};
setUpTableSelect = Expr(
pct = Report( pc )[Table Box( 1 )];
pct << set click sort( 1 );
//cs << link platform( dist1 );
Try( pct[Number Col Box( "Cpm" )] << delete( 1 ) );
Wait( 0 );
pct << set height( 250 );
win1 << move window( 0, 0 );
pct << set row change function(
Function( {this},
selRow = this << get selected rows();
If( N Items( selRow ) > 1,
Throw( "Only select a single row" ),
Show( col1 = dt << get selected columns() );
cs << set current( Char( col1[1] ) );
);
dt << clear column selection();
)
);
);
WinExpr = Expr(
win1 = New Window( "Parametric Test Summary Report",
pc = dt << Process Capability(
Process Variables( Eval( colList ) ),
Moving Range Method( Average of Moving Ranges ),
Capability Box Plots( 0 ),
Within Sigma Summary Report( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Process Performance Plot( 0 ),
Automatic Recalc( 1 ),
SendToReport( Dispatch( {"Within Sigma Capability Summary Report"}, "", TableBox, {Sort By Column( 14, 1 )} ) )
),
tb = Text Box(
" Parameter distribution will appear below here. Select a row to show distribution for that parameter. \!N",
<<SET wrap=""></SET>Hoffe das hilft!,
DS
Betreff: Fehler: Die aktuelle Spalte konnte auf der Plattform nicht gefunden werdenDie Erklärung:
Wenn
cs << link platform( dist1 );
ist ein Teil von setUpTableSelect es wird bei jeder Tabellenaktualisierung ausgeführt.
Aber es ist so eingerichtet :NPN1 wird durch eine der anderen Spalten ersetzt. Dies funktioniert nur, wenn :NPN1 genau zu diesem Zeitpunkt in der Vertriebsplattform verwendet wird. Wenn nicht, wird eine Fehlermeldung angezeigt.
Betreff: Fehler: Die aktuelle Spalte konnte auf der Plattform nicht gefunden werdenDanke euch beiden @hogi Und @SDF1 ! Das hat geholfen. Ich hätte nicht gedacht, dass mehrere Wiederholungen des Link-Plattform-Befehls Probleme verursachen würden.