Überprüfen Sie, ob ein Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istIch habe eine Eingabezeichenfolge von unten:
For( i = 1, i <= N Rows( dtWaferIDList ), i++,
tempi = Column( dtWaferIDList, 1 )[i];
InputString = If( i == 1, "'", "" ) || InputString || tempi || If( i < N Rows( dtWaferIDList ), "','", "'" );
);
Und eine Tabelle1, die ich aus einer Datenbank ziehe. Ich möchte überprüfen, ob (in der Wafer-Spalte von Tabelle 1) alle Wafer aus der Eingabezeichenfolge in dieser Spalte enthalten sind.
- wenn alle Wafer Daten haben: Anzeigemeldung = "Daten für alle Wafer vorhanden".
- wenn nicht: Anzeigemeldung = "keine Daten vorhanden".
Danke schön!
DatentabelleSkripterstellungBetreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istDanke euch beiden! Scheint jetzt zu funktionieren. Ich schätze es!
Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istIhr Nachrichtenwert wird falsch angegeben.Das Folgende wird funktionieren
msg = "\!N#Data is unavailable for the following wafers:" || Char( uncommon2 << Get Keys );
Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istVerwenden Sie debug Show()s und kleine Datensätze, um zu testen, wo Sie Fehler machen (öffnen Sie das Protokollfenster von View / Log).
Vielleicht hilft dir das weiter:
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt1 << Select Rows([1,2,3]);
dt2 = dt1 << Subset(selected rows);
dt1 << clear select;
dt1_uniq = Associative Array(dt1:name);
dt2_uniq = Associative Array(dt2:name);
dt1_copy = dt1_uniq;
dt2_copy = dt2_uniq;
dt1_copy << Remove(dt2_copy);
Show(concat items(dt1_uniq << get keys, ", "));
Show(concat items(dt2_uniq << get keys, ", "));
Show(concat items(dt1_copy << get keys, ", "));
Show(N Items(dt1_uniq), N Items(dt2_uniq), N Items(dt1_copy));Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten ist@jthi
Ich sehe nicht, wie das mein spezielles Problem löst. Wenn ich Ihr Skript ausführe, passiert nichts. Ich brauche die Schlüssel aus dem assoziativen Array, um für den Benutzer sichtbar zu sein und in einem Nachrichtenfeld angezeigt zu werden.
unique wafers = Associative Array( WaferRgDt:Wafer );
given wafers = Associative Array( dtWaferIDList:WaferList );
intersection = unique wafers; intersection << Intersect( given wafers); //intersection between arrays
//uncommon represents wafers that have no data associated with it.
uncommon = given wafers; uncommon2 <<REMOVE></REMOVE>
Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istUm eine Liste von Strings in einen String umzuwandeln, können Sie Concat Items() verwenden.
Names Default To Here(1);
aa = Associative Array({"bun",
"shoe",
"tree",
"door"}
);
uniqKeys = aa << get keys;
Show(uniqKeys);
Show(Concat Items(uniqKeys, ", "));
Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istDieser Diskussionsbeitrag wurde auch verwendet, um beim Schreiben des obigen Codes zu helfen Re: Zwei Listen schnell vergleichen (ungewöhnliche Elemente)?
Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istHallo Nelson,
Ich weiß die Hilfe zu schätzen! Ich bin noch ein bisschen neu bei JMP und habe noch keine assoziativen Arrays verwendet. Ich habe darüber im Scripting Guide und Index nachgelesen; bin aber noch etwas verwirrt. Hier bin ich in meinem Code: (direkt nach dem Öffnen der Tabelle WaferRgDt aus einer Datenbank)
unique wafers = Associative Array( WaferRgDt:Wafer );
given wafers = Associative Array( dtWaferIDList:WaferList );
intersection = unique wafers; intersection << Intersect( given wafers); //intersection between arrays
//uncommmon2 represents wafers that have no data associated with it.
uncommon2 = given wafers; uncommon2 <<REMOVE></REMOVE>
Wenn ich dies ausführe, erhalte ich ein leeres Nachrichtenfeld mit einem Punkt ... also scheint immer noch etwas nicht in Ordnung zu sein. Ich frage mich, ob es sich um ein Logikproblem oder eine Syntax handelt. Ich hatte einige Probleme herauszufinden, wie man Schlüssel in eine Messagebox schreibt, wenn es überhaupt möglich ist. Hoffe das war deutlich genug. Danke noch einmal!
Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten ist@jthi hat Sie in die richtige Richtung gewiesen.Ihr vorgeschlagener Ansatz verwendet eine sehr lange Literalzeichenfolge.Ich schlage vor, dass Sie entweder assoziative Arrays oder eine JMP-Liste verwenden.
Unten ist ein einfaches Skript, das eine Datentabelle öffnet, die Wafer enthält.Es erstellt dann eine Datentabelle, die einen zufälligen Satz von Wafern enthält.Schließlich prüft es, ob der Zufallssatz alle Wafer aus der ersten Datentabelle enthält.
names default to here(1);
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
unique wafers = associative array(dt:Wafer);
// Create a random wafer table and see if it contains all wafers
dtRand = new table("Random",
add rows(60),
new column("Rand Wafer", set each value(random integer(1,24)));
);
random wafers = associative array(dtRand:Rand wafer);
Random wafers << Intersect( unique wafers );
if(n items(Random wafers) == n items( unique wafers),
msg = "data for all wafers available",
msg = "no data available"
);
new window("Message", <<MODAL></MODAL>Betreff: Prüfen, ob Wafer aus einer Eingabezeichenfolge in einer Datentabelle enthalten istSie könnten höchstwahrscheinlich Associative Array für diesen Vergleich verwenden Anwendungen für assoziative Arrays . Schau dir das Teil an Spalten in zwei verschiedenen Datentabellen vergleichen