Wie erstelle ich ein modales Auswahlfenster mit MehrfachauswahlHallo JMP-Community,
Ich brauche bei Folgendem Hilfe: Ich habe eine Tabelle ( dt ) mit einer nominalen numerischen Spalte ( Values ). Ich möchte ein Fenster erstellen, das die sortierten eindeutigen Werte der Spalte Values anzeigt. Dann möchte ich einen oder mehrere Werte auswählen, diese zurückgeben und an eine Select Where -Funktion übergeben.
Ich bin ein absoluter Anfänger bei JSL und bin für Ihre Hilfe dankbar.
Um dieses Problem zu lösen, habe ich eine Funktion SelectNumericValues wie folgt erstellt:
// function to create a modal window with selection functionality
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<
// call my function with table dt and nominal numeric column "Values"
selected_values = SelectNumericValues(dt, "Values");
dt_select = dt << Select Where( :Values == selected_values)
Das Fenster mit den eindeutig sortierten Werten wird korrekt dargestellt:

Und ich kann eine oder mehrere Optionen auswählen. Aber am Ende bekomme ich diese beiden Fehler:
- Senden erwartet Skriptobjekt beim Zugriff oder bei der Auswertung von „Liste“, {/*###*/"0", "1", "2"}
- Name nicht aufgelöst: Button im Zugriff oder in der Auswertung von 'Button' , Button( 1 ) /*###*/
Das deutet darauf hin, dass ich die Schaltflächen in der Funktion „SelectNumericValues“ nicht richtig handhabe und dass ich auch mit den zurückgegebenen Werten in der Funktion „Select Where“ falsch umgehe.

Als Zusatzfrage: Wie würde ich die Anforderung implementieren, dass mindestens eine Option ausgewählt sein muss (das Schließen des modalen Fensters ohne Auswahl sollte entweder nicht möglich sein oder würde implizit bedeuten, dass alle Optionen ausgewählt sind).
Danke!
Paul
Automatisierung und SkriptingWindowsBetreff: Wie erstelle ich ein modales Auswahlfenster mit MehrfachauswahlIch habe eine funktionierende Lösung gefunden. Ich habe die folgenden Fehler gemacht:
- Die Funktion SelectNumericValues gibt eine Liste von Zeichen zurück, nicht von Zahlen.
- Der Funktionsaufruf „Select Where“ erfordert, dass die Funktion „Contains“ mit der Zahlenliste übereinstimmt.
- Diese Zeile selected_values = nw << Show Window; in der Funktion SelectNumericValues verursacht den Button-bezogenen Fehler (glaube ich)
Daher muss ich die ausgewählten Werte in numerische Werte umwandeln. Außerdem muss ich den Funktionsaufruf „Select Where“ anpassen.
Ich finde, dass das richtig funktioniert:
// Function to generate the user selection window for numeric values
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<I am happy to see additional improvements from other users.Betreff: Wie erstelle ich ein modales Auswahlfenster mit MehrfachauswahlIch denke, Sie sollten sich die Verwendung eines Datenfilters ansehen. Dieser übernimmt die Anzeige und Auswahl für Sie.
Betreff: Wie erstelle ich ein modales Auswahlfenster mit MehrfachauswahlDanke, Jim!
Auf Ihre Empfehlung hin habe ich ein Skript mit der Datenfilterfunktion erstellt. Vielen Dank für den Hinweis, denn es handelt sich um eine sehr nützliche Funktion zum interaktiven Filtern von Daten.
Die Hauptfunktion, die mein Skript implementiert, besteht darin, eine Ausgabe (ein Journal, das z. B. als PDF-Dokument gespeichert wird) basierend auf den Daten zu erstellen, nachdem diese vom Benutzer gefiltert wurden. Mit anderen Worten, es besteht hier keine Notwendigkeit für eine interaktive, multivariate Filterung. In diesem Sinne ist der Ansatz, den ich in diesem Beitrag vorgestellt habe, für mich nützlich.
Paul