Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Sie können wahrscheinlich die JMP-Abfrage-Generator um diesen Workflow automatisch zu erstellen. Verwenden Sie die Spalte mit den Produktnummern als Filterspalte und wählen Sie die Beim Ausführen auffordern Möglichkeit.

Sie können dann zum roten Dreieck gehen und "Skript ausführen" kopieren und dieses Skript in Ihr Skript einfügen, um die Teilmengentabelle als Teil Ihres Skripts zu erstellen.

Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Das ist 'nackte Knochen', aber es sollte Ihnen den Einstieg erleichtern.
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize( age group = By( :age ) );
// you could also use an associative array to get the unique levels.
New Window( "Selection", << Modal,
lb = List Box(
age group,
),
Button Box( "OK",
got em = lb << Get Selected;
)
);
For( g = 1, g <= N Items( got em), g++,
// do something with each selected group
Show( got em[g] );
);
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Aufbauend auf @markbailey 's Ansatz, hier ist ein bisschen mehr (alter) Code:
NamesDefaultToHere(1);
// Make a table with a list of 'products'
dt = NewTable("Products", NewColumn("Product ID", Character, Nominal, Formula(Char(RandomInteger(1, 10)))));
dt << addRows(20);
dt << runFormulas;
// Put up a list of distinct products that occur in 'dt'
prods = AssociativeArray(Column(dt, "Product ID") << getValues) << getKeys;
nw = NewWindow("Pick some Products from the List",
lb = ListBox(prods),
ButtonBox("OK", OKscript)
);
// This script runs when the user hits 'OK'
OKscript =
Expr(
nw << closeWindow;
// Find out which products were selected
selecedProds = lb << getSelected;
// Find out all corresponding rows in 'dt'
selectedRows = [];
for(p=1, p<=NItems(selecedProds), p++,
selectedRows = VConcat(selectedRows, dt << getRowsWhere(:Product ID == selecedProds[p]))
);
// Make the subset table
dt2 = dt << Subset(Rows(selectedRows), LinkToOriginalDataTable(1));
);Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Wenn ich dies für eine vorhandene Tabelle tun und entsprechend ALLE mit dieser Tabelle verknüpften Spalten verwenden möchte, aber nur die entsprechenden Zeilen für die gefilterten Produkte übermitteln möchte, wie kann ich das einfach tun?
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Hier ist ein Ausschnitt aus diesem Code. Beachten Sie, dass dt2 (PrimaryRFR_OUT_2015) die Datentabelle ist, nach der ich nach Produkt-CFN filtern, eine neue Tabelle erstellen und diese Tabelle speichern möchte. Beachten Sie, dass das Filterfeld genau mit der korrekten Produkt-CFN-Liste angezeigt wird, aber sobald ich auf OK drücke, wird "Invalid Row #" angezeigt:
dt2 << Save( "PrimaryRFR_OUT_2015.jmp" );
tab = dt2 << Tabulate(
Add Table(
Column Table( Grouping Columns( :Code LLT of OUT_2015 ) ),
Row Table( Grouping Columns( :Code LLT of PrimaryRFR_2015, :Code LLT Desc of PrimaryRFR_2015) )
)
);
dt_tab = tab << Make Into Data Table;
dt_tab << set name( "Tabulate" );
dt_tab << Save( "PrimaryRFR_OUT_Tabulate_2015.jmp" );
prods = AssociativeArray(Column(dt2, "Product CFN") << getValues) << getKeys;
nw = NewWindow("Pick Products from the List to be filtered",
lb = ListBox(prods),
ButtonBox("OK", OKscript)
);
OKscript =
Expr(
nw << closeWindow;
SelectedProds = lb << getSelected;
selectedRows = [];
for( p = 1, p <= NItems( SelectedProds ), p++,
selectedRows = VConcat( selectedRows, dt << getRowsWhere( :Product CFN == SelectedProds[p]))
);
dt5 = dt2 << Subset(Rows(selectedRows), LinkToOriginalDataTable(1));
);
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?In Ihrer Zeile beginnt das mit
selectedRows = VConcat (selectedRows ……….
der Verweis auf "dt" sollte "dt2" seinBetreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Manchmal verlierst du dich so in deiner eigenen Codierung, dass du vergisst, welcher Weg nach oben und welcher nach unten führt. Danke euch allen!
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren? Ich habe den Fehler gefunden, weil ich den gleichen Fehler schon oft gemacht habe 
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Noch ein Schuss, Wie speichere ich diese Datei jetzt mit den neuen Produktnummern? Meine Datei ZACH_2015.jmp wird nicht gespeichert
//*** Create a window to prompt user to filter for Model numbers they would like to use
prods = AssociativeArray(Column( dt2, "Product CFN" ) << getValues) << getKeys;
nw = NewWindow( "Pick Products from the List to be filtered",
lb = ListBox( prods ),
ButtonBox( "OK", OKscript )
);
OKscript =
Expr(
nw << closeWindow;
SelectedProds = lb << getSelected;
selectedRows = [];
for( p = 1, p <= NItems( SelectedProds ), p++,
selectedRows = VConcat( selectedRows, dt2 << getRowsWhere( :Product CFN == SelectedProds[p]))
);
dt5 = dt2 << Subset(Rows(selectedRows), LinkToOriginalDataTable(1));
);
dt5 << Save( "ZACH_2015.jmp");
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Was sagt das Protokoll über das Speichern? Ich würde vorschlagen, dass Sie eine genauere Pfad- / Datentabellenreferenz verwenden. Der Standardspeicherort für die Datentabelle befindet sich möglicherweise nicht dort, wo sie Ihrer Meinung nach gespeichert wird.Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Dies funktioniert, wenn ich den Dateipfad / -speicherort spezifiziere.
Follow-up: Wie mache ich das, wenn ich es für den Benutzer vereinfachen und im aktiv ausgewählten Verzeichnis speichern möchte, das ich den Benutzer zu Beginn zur Auswahl auffordere?
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?- Siehe mein Update zur letzten Antwort, die ich gepostet habe.
- Sie können Umgebungsvariablen in Ihrem Pfad für das Speichern angeben.
dt << save( "$TEMP/myfile.jmp" );
Eine Liste der JMP-Umgebungsvariablen finden Sie im Skripthandbuch
- Sie können auch Ordner erstellen. Mithilfe von Windows-Umgebungsvariablen, um den Pfad zu ihrem Dokumentordner zu finden, können Sie einen neuen Ordner erstellen und alle Ihre Ausgaben dort ablegen. Bei nachfolgenden Durchläufen können Sie testen, ob der Ordner vorhanden ist, und in diesem Fall den Erstellungsschritt umgehen.
Betreff: Gibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht aus dieser gefilterten Auswahl zu generieren?Auf 3. Gibt es eine Codezeile, mit der Sie beginnen können, wie Sie einen neuen Ordner mit dem Namen "JMP Data" einrichten und alles darin speichern können, und bei nachfolgenden Durchläufen überprüfen Sie einfach, ob es bereits im Benutzerverzeichnis vorhanden ist?
Mit freundlichen Grüßen,
ZachGibt es eine Möglichkeit, den Benutzer zu bitten, die gängigen Produktnummern in einer Spalte auszuwählen, nach denen gefiltert werden soll, und anschließend einen Bericht zu dieser gefilterten Auswahl zu erstellen?Zum Beispiel möchte ich den Benutzer an einer bestimmten Stelle im Skript auffordern, die Produktnummern auszuwählen, die in dieser bestimmten Zeile zum Filtern dargestellt sind, und JMP auf der Grundlage dieser Eingabe eine neue Tabelle erstellen lassen.
Vielen Dank,
Zach