Wählen Sie Zeilen aus, die einem beliebigen Wert in einer Liste entsprechen
Problem
Angenommen, Sie fordern einen Benutzer auf, eine Auswahl zu treffen. Wenn Sie die Werte vom Benutzer abrufen, werden diese normalerweise in einer Liste gespeichert.Jetzt müssen Sie die Daten auswählen, die den Werten in der Liste entsprechen.
Lösung
Das folgende Beispiel zeigt, wie Sie Zeilen in einer Datentabelle auswählen können, die einen beliebigen in einer JSL-Liste gespeicherten Wert enthalten. Listen, die entweder numerische Werte oder Zeichenfolgen enthalten, können verwendet werden und werden unten angezeigt.Einzelheiten finden Sie in den eingebetteten Kommentaren.
/* Open a sample data table. */
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
/* Create a list of ages. */
myList = {9, 12, 15, 17, 18};
/* Select all rows which have an age that is in the list. */
dt << Select Where( Contains( myList, :age ) );
Wait( 2 ); // For demonstration purposes
/* Create a list of student names. */
myStudents = {"HENRY", "ROBERT", "BARBARA", "SALLY", "MARION"};
/* Select all rows which have any of the names in the list. */
dt << Select Where( Contains( myStudents, :name ) );
Betreff: Wählen Sie Zeilen aus, die mit einem beliebigen Wert in einer Liste übereinstimmenAh schön 
Ich befürchtete, dass dies langsamer ist. aber in Wirklichkeit ...
Notiz für mich selbst: verwenden enthält 


Mehr sehen...
Betreff: Wählen Sie Zeilen aus, die mit einem beliebigen Wert in einer Liste übereinstimmenBesteht ein besonderer Bedarf für die Verwendung einer komplexeren Syntax? Sie können Loc mit Any verwenden
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
dt << Select Where(Any(Loc({"JANE", "DAVID", "PATTY"}, :name)));
Betreff: Wählen Sie Zeilen aus, die mit einem beliebigen Wert in einer Liste übereinstimmengleiches Ergebnis, ja.
aber andere Syntax.
Betreff: Zeilen auswählen, die einem beliebigen Wert in einer Liste entsprechenIst das nicht der Zweck, für den Sie Contains() verwenden würden?
Betreff: Wählen Sie Zeilen aus, die mit einem beliebigen Wert in einer Liste übereinstimmendt << Select Where( Any( Row() == Index( 3, 5 ) ) );
ist cool 
Gibt es etwas Ähnliches für?
dt << Select Where( Any( :name == {"JANE", "DAVID","PATTY"}) );?