Das Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Grenzwert, dann passIch habe eine Tabelle (Limits) mit den Limits.Die Tabellenspalten sind Produkt, Komponente A, Komponente B. Unter jeder Komponente befindet sich die Grenze.Beispielprodukt, Aluminium, Zink
Fudd .24 .50
Ich habe eine andere Tabelle FG Metals, die eine PASS/FAIL-Spalte und eine Aluminium-Spalte und eine Zink-Spalte mit den Ergebnissen in jeder Zeile hat.Beispiel PASS/FAIL, Aluminium, Zink
.09 .1
Ich muss das Ergebnis von dt(FG metals) Aluminium .09 mit dem dt(Limits) Aluminium .24 vergleichen. Wenn das Ergebnis kleiner als der Grenzwert ist, tragen Sie Pass in die Spalte PASS/FAIL ein, andernfalls geben Sie FAIL ein.
Hoffentlich habe ich das gut genug erklärt.Bitte lassen Sie es mich wissen, wenn Sie Fragen haben.
Wayne
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thEs funktionierte.
Danke schön.
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thVersuchen Sie, die Codezeile in zu ändern
<FONT style="background-color: #ffffff;">Column( colNamesList[theColumn] || " PASS/Fail" ) << delete</FONT> property("formula");
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thHallo TxNelson,
Wenn ich im Skript auskommentiere -- Column( colNamesList[theColumn] || "PASS/Fail" ) << Formel löschen; es läuft prima.
</CODE></P><P><CODE class=" language-jsl">Nur eine Frage - löschen wir nicht die Spaltenformel, noch bevor wir unsere Spalte erhalten? Da unsere Kolumne komplett sein wird
Sobald wir die Werte von LSL und USL ersetzen und in der nächsten Zeile der For-Schleife ?
</CODE></P><PRE><CODE class=" language-jsl">colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0, /*show(colNamesList[theColumn] || " PASS/Fail"), Wait (1); */
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
/* Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;*/
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thUnabhängig von der Wartezeit, die ich einsetze, wird nur die erste Spalte ausgewertet und derselbe Fehler durchlaufen. Aber wenn ich es aufteile und in zwei Teile laufen lasse – es ist in Ordnung! Keine Ahnung warum?
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thdt << Formeln wiederholen; und warte (0) - keiner von ihnen funktioniert für mich. Aber ja, wenn ich meinen Code in zwei Läufe aufteile, funktioniert es gut.
Irgendein anderer Vorschlag?
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thSie können eine hinzufügen
wait(0);
oder
dt << rerun formulas;
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thHallo, ja, es funktioniert, wenn ich Code ausführe, bis ich zuerst das Spezifikationslimit und dann den Rest verwalte, und hinzufüge
show(colNamesList[theColumn] || "PASS/Fail"); macht keinen unterschied. Der Code wird auch nach dem Hinzufügen dieser Zeile immer noch nicht auf einmal ausgeführt.
Gibt es eine Möglichkeit, den Teil zum Verwalten der Spezifikationsgrenze zuerst auszuwerten und dann weiter zu gehen, oder kann ich einen Wartebefehl (z. B. - 2 Sekunden) eingeben, bevor ich in die for-Schleife gehe?
Vielen Dank.
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thDas Verwalten von Spezifikationsgrenzen wird möglicherweise nicht abgeschlossen, bevor der unten stehende Code verarbeitet wird.Versuchen Sie, einfach durch die Manage Spec Limits zu laufen.Führen Sie dann nach Abschluss den verbleibenden Code aus.
Fügen Sie außerdem hinzu
show(colNamesList[theColumn] || " PASS/Fail");
Kurz vor Linie 19
Eval(
Sehen Sie sich dann an, über welchen Namen sich der Code beschwert
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thHi,
Ich habe diese Überprüfung durchgeführt und sichergestellt, dass sowohl LSL als auch USL in der Spezifikationstabelle vorhanden sein sollten. Tatsächlich starte ich auch die For-Schleife – die Spalte = 10, wo ich wusste, dass ich ab Spalte 10 Spezifikationsgrenzen in der Tabelle habe, obwohl dies durch die Is Empty-Anweisung berücksichtigt werden sollte.
Nichts hat geklappt.
Vielen Dank.
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thDie Codezeile, die ein Problem hat, ist
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
Die Fehlermeldung besagt, dass die Spalte, auf die verwiesen wird, nicht gefunden werden kann.Die Spalte, auf die verwiesen wird, sollte in der Anweisung unmittelbar zuvor erstellt worden sein.
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
Damit diese Anweisung funktioniert, müssen sowohl eine LSL als auch eine USL für die Spalte vorhanden sein, auf die in der Formel verwiesen wird.Ich vermute, dass dies das Problem ist.Ich würde überprüfen, ob sowohl LSL als auch USL vorhanden sind.
Zu deiner Frage
" Warum verwenden wir auch "__" in Spezifikationsgrenzen wie LSL "
Dies ist keine JMP-Anforderung.In der Substitute()-Funktion müssen Paare übereinstimmender Werte vorhanden sein, die JMP für die Substitution verwendet.Ich verwende das "__" vor und nach den übereinstimmenden Werten, nur um den Code klarer zu machen.Auch dem Namen des passenden Paares gebe ich etwas aussagekräftiges.Und in diesem Fall ersetzt die Substitution()-Funktion die LSL, die Referenz-Col und die USL, und so verwende ich gemäß meiner Konvention __LSL__, __col__ und __USL__.
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thHallo Nelson,
Ich erhalte folgenden Fehler in dem Skript, das Sie mir am Freitag senden. Irgendeine Hilfe
Warum verwenden wir auch "__" in Spezifikationsgrenzen wie LSL. Ich habe versucht, eine Antwort in der jmp-Skriptrichtlinie zu finden, konnte aber nicht viel verstehen.
Vielen Dank.

Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thHallo, vielen Dank,
Ja, das ist was (Lesen Skriptleitfaden ) mache ich jetzt einen Tag. 
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thIch habe unten eine Lösung für Ihre Anfrage platziert.Sie müssen sich jedoch die Zeit nehmen, den Scripting Guide zu lesen, um sicherzustellen, dass Sie verstehen, was ich bereitgestellt habe, und um Ihnen auch dabei zu helfen, die in anderen Diskussionen bereitgestellte JSL zu verstehen
names default to here(1);
dtspecs = Data Table ("Specs_Limits");
dt = Data Table ("Table_A");
Loadlimit = dt << Manage Spec Limits( Y( :BVIA_RES, :COILVIA_RES, :RDR_RES, :TAD_RES,
:WELGL_RES), Load from Limits Table("Specs_Limits.jmp"), Save to Column Properties (1) );
Loadlimit << close window;
colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0,
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thHallo TxNelson,
Ich brauche eine ähnliche Lösung und habe versucht, der von Ihnen bereitgestellten zu folgen, konnte aber meine Ergebnisse nicht abrufen. Kannst du mir bitte Helfen --
Ich habe zwei Tabellen - eine ist die Datentabelle und die andere eine Spezifikationstabelle. Ich muss Daten in der Haupttabelle mit den Spezifikationen in der Spezifikationstabelle vergleichen und sie als 1 (bestanden) und 0 (nicht bestanden) in eine neue Spalte einfügen.
Irgendeine Hilfe ?
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thJim,
Funktioniert super.Danke nochmal für deine Hilfe.
Wayne
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit th
- Die verschiedenen Metallspalten in der Grenzwertdatei müssen numerische Spalten sein.
- Die Pass/Fail-Spalte in der Metalldatentabelle muss als Zeichen definiert werden.
Hier ist ein Skript, das auf der Grundlage der von Ihnen bereitgestellten Beispieldaten funktioniert ... und mit den oben genannten Änderungen.Der Code verwendet die Grenzwertdatentabelle, um zu bestimmen, welche Metalle getestet werden sollen.
Names Default To Here( 1 );
dtLimits = Data Table( "Limits sample (1)" );
dtMetals = Data Table( "FG Sample (1)" );
// Get the names of the columns with the metals data in them
metalsColNames = dtLimits << get column names( string, numeric );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( N Rows( dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ) ) > 0,
theProductRow = (dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ))[1];
result = "Pass";
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[theProductRow];
col = Column( dtMetals, metalsColNames[theColumn] );
If( col[theRow] < target,
result = "Fail"
);
);
dtMetals:Name( "Pass/Fail" )[theRow] = result;
)
);Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thWenn irgendein Metall versagt, dann versagt die Probe. Wenn alle Metalle bestehen, besteht die Probe.Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thAlles, was geschehen muss, ist, die richtige Zeile in der Grenzwerttabelle für das Produkt in der Zeile in der Metalldatentabelle zu finden. Ich werde Ihnen eine Modifikation meines Skripts besorgen, die das tut ... aber müssen Sie nicht mehr als eine Pass/Fail-Spalte in Ihrer Metalldatentabelle haben, weil jedes Metall entweder bestehen oder durchfallen kann? ... oder sagen Sie, dass wenn irgendein Metall versagt, es ein Versagen ist, aber wenn alle bestehen, dann passt die Reihe????Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thJIM,
In meiner Limitdatei habe ich mehrere Produkte. Fudd mit Aluminium und dem Limit .05 dann Miracle mit Aluminium und dem Limit .02. Jedes Produkt in der Grenzwertdatei befindet sich unter der Produktspalte. Beispielprodukt, Aluminium, Zink
Fudd .5 .1
Wunder .2 .5
Bitte lassen Sie mich wissen, wie ich mit dem Produkt umgehen soll.
Grüße,
Wayne
Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thHier ist ein Skript, das meiner Meinung nach das tut, was Sie wollen

Names Default To Here( 1 );
// Create example data tables
dtLimits = New Table( "Limits",
New Column( "Product", character, values( {"Fudd"} ) ),
New Column( "Aluminum", values( {.24} ) ),
New Column( "Zinc", values( {.50} ) )
);
dtMetals = New Table( "FG Metals",
add rows( 10 ),
New Column( "Pass/Fail Aluminum", character ),
New Column( "Pass/Fail Zinc", character ),
New Column( "Aluminum", formula( Random Uniform( 0, 1 ) ) ),
New Column( "Zinc", formula( Random Uniform( 0, 1 ) ) )
);
// Get the names of the columns with the metals data in them
metalsColNames = dtMetals << get column names( striing, numeric );
// Loop across the columns and down the rows and calculate the pass/fail
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[1];
col = Column( dtMetals, metalsColNames[theColumn] );
passFail = Column( dtMetals, " Pass/Fail " || metalsColNames[theColumn] );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( col[theRow] < target,
passFail[theRow] = "Fail",
passFail[theRow] = "Pass"
)
);
);Betreff: Ergebnis aus einer Tabelle muss mit dem Spezifikationslimit in einer anderen Tabelle verglichen werden. Wenn Ergebnis < Limit thBeispieldateien habe ich angehängt.