Mehrere DataTables öffnen<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Daher möchte ich eine Anwendung erstellen, die den Benutzer auffordert, eine bestimmte Anzahl von Datentabellen anzugeben, wonach der Benutzer die entsprechenden Tabellen auswählen kann. Außerdem möchte ich jeder dieser Tabellen Spalten hinzufügen. Ich bin noch neu bei jmp/jsl, aber unten ist mein Skript, das natürlich nicht funktioniert. Jede Hilfe ist willkommen.
Neues Fenster( „Anzahl der Datentabellen“,
<
Textfeld( „Anzahl der Datentabellen“),
variablebox = Number Edit Box(),
Schaltflächenfeld („OK“),
Schaltflächenfeld („Abbrechen“)
);
N = Variablebox << get;
For( i = 1, i <= N Items( dt ), i++,
dt = Öffnen()
Namen standardmäßig hier(1);
dt=Aktuelle Datentabelle (i);
dt << New Column("ColumnA", Numeric, continous, Format("Best", 5));
dt << New Column("ColumnB", Numeric, continous, Format("Best", 5));
);
PS: Ich weiß, dass das Skript zum Hinzufügen zusätzlicher Spalten irgendwie in der For-Schleife ausgeführt werden muss, aber wenn ich die Datentabellen überhaupt öffnen kann, wie kann ich dann überhaupt die Spalten hinzufügen?
PMroz jordanhiller@jmp Chris.kirchberg CHFields MarkBailey
Betreff: Mehrere DataTables öffnenOh wow, das funktioniert. Danke!!!
Betreff: Mehrere DataTables öffnenNatürlich! Vielen Dank, dass du mich aufgeklärt hast, Melanie. . .
Jeder, der diesen Thread liest, sollte auch beachten, dass (im Gegensatz zu den Kommentaren im Code) das Schlüsselwort „multiple“ von OS/X und Windows respektiert wird.
Betreff: Mehrere DataTables öffnenDas multiple Argument für PickFile() ist ein Schlüsselwort, kein boolescher Wert. Versuche dies:
Wählen Sie Datei (
„Wählen Sie eine oder mehrere Dateien aus“ , // Aufforderung
„$sample_data“ , // Ursprünglicher Ordner
{ „JMP-Dateien|jmp;jsl;jrn“ , „Alle Dateien|*“ } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anfänglicher anzuwendender Dateifilter (Index des Elements in der Liste oben)
0 , // Flag „Speichern“ – Geben Sie entweder ein „Speichern“- oder ein „Öffnen“-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
"mehrere" // Mehrere – Wenn „Save Flag“ = 0, ermöglicht die Verwendung eines Werts von 1 das Öffnen von mehr als einer Datei (wird von OS/X ignoriert)
) ;
Beachten Sie, dass zur Verwendung des Mehrfacharguments alle vorherigen Argumente angegeben werden müssen – Sie können beispielsweise die beiden Flags und die Standarddatei nicht weglassen.
Betreff: Mehrere DataTables öffnenHmmm. Ich werde die Forschung und Entwicklung fragen, weil ich das Gefühl habe, dass das funktionieren sollte.
Wenn möglich, ist es immer am besten, integrierte Funktionen zu verwenden, Sie können jedoch auch Folgendes tun:
NamesDefaultToHere ( 1 ) ;
dir = PickDirectory ( „In den Ordner verschieben, der Ihre Dateien enthält“ , „$DESKTOP“ ) ;
jetzt = Neues Fenster ( „Mehrere Dateien öffnen“ ,
PanelBox ( „Wählen Sie eine oder mehrere Dateien aus“ ,
Pfund = ListBox ( FilesInDirectory ( dir )) ,
LineUpBox ( NCol ( 2 ) ,
ButtonBox ( "OK" , OKScript ) ,
ButtonBox ( "Stornieren" , jetzt << Fenster schließen )
)
)
) ;
OKScript =
Ausdruck (
jetzt << Fenster schließen ;
Dateien = Pfund << getSelected ;
Für ( F = 1 , F <= NItems ( Dateien ) , F ++, Offen ( dir || „/“ || Dateien [ F ])) ;
) ;
Betreff: Mehrere DataTables öffnenDanke Ian, du warst wirklich hilfreich. Ich habe den obigen Code getestet und er funktioniert auch unter Windows. Ich konnte den Code auch bearbeiten und in meine Arbeit integrieren. Allerdings kann ich jeweils nur eine Datei öffnen. Aus Ihrer Erklärung geht hervor, dass das Hinzufügen der letzten 1 in der Funktion „Datei auswählen“ das Öffnen mehrerer Dateien ermöglichen sollte, aber das funktioniert auf meinem Computer (übrigens unter Windows) nicht.Gibt es Möglichkeiten, dies zu umgehen, sodass ich mehrere Dateien gleichzeitig öffnen kann? Danke
Betreff: Mehrere DataTables öffnenJetzt verstehe ich, dass es bei Ihrer Frage um die Auswahl der zu öffnenden Dateien geht. . .
Es sieht so aus, als ob „PickFile()“ bereits flexibel genug ist, um das zu tun, was Sie benötigen (siehe „Hilfe > Skriptindex“).
Soweit es mit dem Betriebssystem interagieren muss, kann man einen kleinen Unterschied zwischen Windows und OS/X erwarten, und das scheint hier auch der Fall zu sein. Leider habe ich jedoch keinen Windows-Rechner, auf dem ich den folgenden Code testen könnte (ich gehe auch davon aus, dass „PickFile()“ bei Mehrfachauswahl tatsächlich eine Liste zurückgibt):
Namen standardmäßig hier ( 1 ) ;
// „PickFile()“ verwenden, um eine Liste der zu öffnenden Dateien abzurufen (nur Windows)
Dateiliste =
Wählen Sie Datei (
„Wählen Sie eine oder mehrere Dateien aus“ , // Aufforderung
„$DESKTOP“ , // Ursprünglicher Ordner
{ „JMP-Dateien|jmp;jsl;jrn“ , „Alle Dateien|*“ } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anfänglicher anzuwendender Dateifilter (Index des Elements in der Liste oben)
0 , // Flag „Speichern“ – Geben Sie entweder ein „Speichern“- oder ein „Öffnen“-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
1 // Mehrere – Wenn „Save Flag“ = 0, ermöglicht die Verwendung eines Werts von 1 das Öffnen von mehr als einer Datei (wird von OS/X ignoriert)
) ;
// Wenn nur eine einzelne Datei ausgewählt ist, ist fileList keine Liste, daher müssen wir sie selbst erstellen
Wenn ( ! IsList ( Dateiliste ) , Dateiliste = EvalList ({ Dateiliste })) ;
// Öffnen Sie die Dateien und speichern Sie die entsprechenden JMP-Tabellennamen
Tabellennamen = {} ;
für ( F = 1 , F <= NItems ( Dateiliste ) , F ++,
dt = Offen ( Dateiliste [ F ]) ;
Einfügen in ( Tabellennamen , dt << getName ) ;
) ;
Betreff: Mehrere DataTables öffnenHallo Ian,
Vielen Dank für das Feedback, ich werde mein Bestes geben, es besser zu erklären. Ich möchte das Skript, das einen Benutzer nach der Anzahl der zu öffnenden Datentabellen fragt und den Benutzer dann auffordert, die zu öffnenden Tabellen auszuwählen, die der zuvor abgefragten Anzahl entsprechen.Der Algorithmus sieht wie folgt aus:
- Skript ausführen
- Der Benutzer wird gefragt, wie viele Datentabellen geöffnet werden sollen (ein modales Fenster erleichtert die Arbeit). Beispiel: Der Benutzer gibt „say“ ein 3
- Der Benutzer wird dann aufgefordert, drei beliebige Datentabellen auszuwählen
- Fügen Sie „Spalte A“ und „Spalte B“ zu jeder der drei Datentabellen hinzu
Ich hoffe, dass dies zur besseren Klärung des Problems beiträgt. Noch einmal vielen Dank!
Betreff: Mehrere DataTables öffnenIch denke, Sie müssen bitte etwas detaillierter darlegen, was Sie suchen.
Angenommen, Sie möchten im ersten Schritt die Auswahl aus geöffneten Tabellen zulassen (und nicht die Auswahl der zu öffnenden Tabellen), dann werfen Sie einen Blick auf Folgendes:
NamesDefaultToHere ( 1 ) ;
// Zeigt die offenen Tabellen in der Sitzung an und lässt den Benutzer einige auswählen
openTables = {} ;
Für ( T = 1 , T <= NTable () , T ++, Einfügen in ( openTables , Datentabelle ( T ) << getName )) ;
jetzt =
Neues Fenster ( „Wählen Sie die gewünschten Tische aus“ ,
Pfund = ListBox ( openTables ) ,
LineUpBox ( NCol ( 2 ) , ButtonBox ( "OK" , OKscript ) , ButtonBox ( "Stornieren" , jetzt << Fenster schließen ))
) ;
// Etwas mit den ausgewählten Tabellen machen (in diesem Fall einfach drucken)
OKScript =
Ausdruck (
jetzt << Fenster schließen ;
selectedTables = Pfund << getSelected ;
Protokoll löschen () ;
Wenn ( NItems ( selectedTables ) > 0 ,
Für ( T = 1 , T <= NItems ( selectedTables ) , T ++,
Drucken ( "Tisch " || selectedTables [ T ] || " ausgewählt." )
) ,
Drucken ( „Keine Tische ausgewählt.“ )
) ;
) ;