Vergleich in der Select Where()-AnweisungHallo zusammen,
Ich habe diese Website ausgiebig durchsucht und denke, dass es eine einfache Lösung ist, aber aus irgendeinem Grund bekomme ich sie nicht zum Laufen und stecke seit 2 Tagen damit fest.
Im folgenden Skript frage ich den Benutzer, welchen Teil einer bestimmten Spalte er auswählen möchte. Zum Beispiel, wenn die Spalte den Wert 8 hat. (Die Spalte kann Werte von 1 bis 8 haben). Dass ich die Zeilen mit diesem Wert in dieser Spalte auswählen und ein neues dt erstellen möchte, in dem ich bestimmte Diagramme nur mit dieser Teilmenge der Datentabelle erstelle.
Es erstellt die Teilmengentabelle mit dem Namen und der Zahl, die ich in das Textfeld eingegeben habe. Es zeigt mir, welche Zahl ich eingegeben habe, z. B. XNo = "8"; Aber Select where ( Column == XNO) funktioniert nicht. Es gibt mir keinen Fehler, es werden lediglich die spezifischen Zeilen nicht ausgewählt oder das Diagramm erstellt. Es erstellt eine neue Datentabelle mit demselben Namen wie die Datentabelle, auf die ich mich beziehe.
Wenn ich Select where (column == "8") oder Select where( Column == 8) ausfülle, funktioniert es. Ich möchte nur, dass diese 8 variabel ist und dass der Bediener sie selbst eingeben kann.
dt = aktuelle Datentabelle();
col = spalte(dt,"MILL_X");
col_name_list = dt << Spaltennamen abrufen( string );
rdata = New Window( „Welchen Teil möchten Sie überprüfen?“,
<
<
X = Textbearbeitungsfeld („Welcher Teil?“),
Textfeld („Zum Speichern auf OK klicken“),
Schaltflächenfeld("OK",
XNo = X << Text abrufen),
Schaltflächenfeld („Abbrechen“);
);
Show( XNo ); //Zeigt mir die Zeichenfolge an, die angegeben wurde, dh wenn ich 8 eingebe, wird mir angezeigt --> XNo = "8";
//Ausgewählte gewünschte Zeilen basierend auf den Werten in der Spalte
dt << Zeilenauswahl(
Select where( :MILL_X == XNo ), // <--- Dies funktioniert nicht, es wählt den gesamten dt anstelle des ausgewählten Werts aus der Spalte aus. Wenn ich :MILL_X == 8 eingebe, funktioniert es. Aber nur für Nummer 8.
Dialog( Bearbeiten( Gleich( Quellspalte( col ) ) ), Dialog offen halten( 0 ) )
);
Subset( (Ausgewählte Zeilen), Ausgabetabellenname( "X " || Char(ColletNo) || " Inspektion" ) );
// Erstelle das gewünschte Diagramm mit den ausgewählten Zeilen
Verteilung(
Kontinuierliche Verteilung(
Spalte( :"Y (µm)"n ),
Prozessfähigkeit (LSL (-15), Ziel (0), USL (15))
)
);
// Optional können Sie das Diagramm hier weiter anpassen
// Zum Beispiel das Hinzufügen zusätzlicher Elemente oder Formatierungsoptionen
dt << clear select;
dt << Spaltenauswahl löschen;
Automatisierung und SkripterstellungDatenzugriffQualitäts- und Verfahrenstechnik Betreff: Vergleich in der Select Where()-AnweisungVersuchen Sie, XNo in eine Zahl umzuwandeln (Num(XNo) ODER verwenden Sie das Zahlenbearbeitungsfeld. Möglicherweise müssen Sie auch Ihren Spaltenverweis etwas ändern (fügen Sie [] zum Vergleich hinzu). Unten finden Sie ein Beispiel für die Verwendung einer Big-Class-Tabelle. Verwenden Sie Werte zwischen 12 und 17 bis prüfen
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Column(dt, "age");
col_name_list = dt << get column names(string);
rdata = New Window( "Which part do you want to check?",
<<MODAL> XNo = "8"; //Ausgewählte gewünschte Zeilen basierend auf den Werten in der Spalte dt << Select Where(col[] == Num(XNo)); dt_subset = dt << Subset(Selected Rows); dt << clear select;</MODAL>
Wenn bestimmte Werte zulässig sind, können Sie Ihren Selektor auch so ändern, dass er dem Benutzer nur die Auswahl bestimmter Werte ermöglicht, ABER zunächst diese Version zum Laufen bringt und dann diese Optionen in Betracht zieht.
Betreff: Vergleich in der Select Where()-AnweisungDies ist nicht die konkrete Lösung, aber ich habe gerade herausgefunden, dass die Spalte ordinal (oder zumindest nicht kontinuierlich) sein muss. Jetzt muss ich es nur noch so anlegen, dass ich immer noch alle meine anderen Spalten bekomme, statt nur die Altersspalte. Ich werde aktualisieren, wenn ich die richtige Lösung habe, aber vielen Dank dafür. Ich wusste, dass es etwas Dummes war, das nicht funktionierte.
Betreff: Vergleich in der Select Where()-AnweisungIch habe keine Ahnung, warum es vorher nicht funktioniert hat, weil ich die Num()-Anweisung schon einmal ausprobiert habe und auch die col[]. Vielleicht habe ich sie nicht gleichzeitig gemacht, ich weiß es nicht, habe viele Iterationen ausprobiert, aber jetzt funktioniert es. Selbst eine Umstellung der Säule auf kontinuierlich ist nicht erforderlich. Das Einzige, was ich in Ihrem Skript noch nicht ausprobiert habe, ist „Names Default to here(1);“ Linie.