Erstellen Sie eine SchleifeIch möchte mit dem folgenden Skript eine Spalte mit den Zeilennummern zu mehreren Datentabellen hinzufügen:
dt<<NEW column=""></NEW>
Ich bin noch neu im Scripting. Wie kann ich alle meine Datentabellen automatisch verarbeiten? Ich habe diese Informationszeile, die funktionieren könnte, aber es scheint, dass es ein Problem beim Auffinden von „Datentabelle“ gibt ...
Names Default To Here( 1 );
// Create a list of data tables to be updated
dtList = {"Table1", "Table2", etc...};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( dtList ), i++,
dt = Data Table( dtList[i] );
Betreff: Erstellen Sie eine SchleifeVielen Dank, Jeff. Das ist großartig.
Ich muss mir unbedingt die Zeit nehmen, mir die Lektüre des Scripting-Guides genauer anzuschauen. Es wird mir helfen.Betreff: Erstellen Sie eine SchleifeSie haben eine Reihe von Problemen.
Du hast verwirrt dirpath Und alle Dateien und sie in Ihrem Code falsch verwendet haben. Das Ergebnis von Verzeichnis auswählen() , dirpath ist eine Zeichenfolge, die den Pfad zu dem vom Benutzer ausgewählten Verzeichnis darstellt. Sie haben versucht, es in der Indizierung Ihrer For()-Schleife unten zu verwenden, als ob es die Liste der Dateien hätte.
Das Ergebnis von Dateien im Verzeichnis() , alle Dateien , ist die Liste der Dateien im Verzeichnis. Das sollten Sie im Auge behalten.
Das wirst du tun müssen Offen() die Datentabellen, bevor Sie die neue Spalte hinzufügen können.
Seit der alle Dateien Liste enthält nur die Dateinamen. Sie müssen das Verzeichnis verketten. dirpath , im Argument zu Open().
Schließlich sollten Sie sicherstellen, dass Sie nur versuchen, JMP-Datentabellen zu öffnen, indem Sie die Erweiterung der Dateien überprüfen. Im folgenden Beispielcode mache ich das mit dem Wort() Funktion. Das Argument -1 fragt nach dem letzten Wort in der Zeichenfolge.
dirpath = Pick Directory();
allfiles = Files In Directory( dirpath );
// Loop through each of the files and add the column
Show( allfiles );
For( i = 1, i <= N Items( allfiles ), i++,
If( Word( -1, allfiles[i], "." ) == "jmp",
dt = Open( dirpath || allfiles[i] );
dt << New Column( "Sequence", numeric, formula( Row() ) );
)
);
Besuche die Loslegen Abschnitt der Datentabellen Kapitel des Skript-Anleitung für eine Einführung in die Arbeit mit Datentabellen.
Betreff: Erstellen Sie eine SchleifeIch habe beim Kopieren des Skripts einen Fehler in meiner Nachricht gemacht, aber ich habe mit der richtigen Version gearbeitet und erhalte trotzdem eine Fehlermeldung mit der Debug-Option:
Unerwartetes „Für“. Vielleicht fehlt ein ; oder .
Betreff: Erstellen Sie eine SchleifeSie haben „Dispath“ in Ihrer Schleife.Ändern Sie es in „dirpath“
Betreff: Erstellen Sie eine SchleifeScheinbar. Es ist noch nicht richtig. Stimmt etwas mit der „For“-Zeile nicht?
<SPAN class="token comment">dirpath = Pick Directory();<BR />allfiles = Files in Directory (dirpath);<BR />all files<BR /><BR />// Loop through each of the files and add the column</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN> i <SPAN class="token operator">=</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> i <SPAN class="token operator"><=</SPAN> <SPAN class="token function">N Items</SPAN><SPAN class="token punctuation">(</SPAN> dirpath <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> i<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Data Table</SPAN><SPAN class="token punctuation">(</SPAN> dispath<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dt<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token function">new column</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"Sequence"</SPAN><SPAN class="token punctuation">,</SPAN> numeric<SPAN class="token punctuation">,</SPAN> formula<SPAN class="token punctuation">(</SPAN><SPAN class="token function">Row</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Betreff: Erstellen Sie eine SchleifeEs gibt Befehle zum Auswählen eines Verzeichnisses und zum Auflisten aller Dateien in diesem Verzeichnis.
Ich würde empfehlen, bei jeder Datei zu prüfen, ob es sich um eine JMP-Datei handelt (z. B. durch Überprüfung der Dateiendung).
dirpath = Pick Directory();
allfiles = Files in Directory(dirpath);
allfiles
Betreff: Erstellen Sie eine SchleifeJa! Es funktioniert gut !
Ist es möglich, zu Beginn des Skripts das Öffnen aller Datentabellen in einem Ordner anzufordern, um das Skript anschließend auszuführen? Sollte der Titel jeder Datei nacheinander in den „listoftables“ angegeben werden? Das nimmt viel Zeit in Anspruch. Wie raten Sie mir, vorzugehen?
Dank im Voraus
Betreff: Erstellen Sie eine SchleifeDas folgende Skript funktioniert für mich. Wenn dies bei Ihnen nicht der Fall ist, wäre es hilfreich, den Inhalt Ihres Protokolls (Hauptmenü => Fenster => Protokoll) und die von Ihnen verwendete JMP-Version zu veröffentlichen.
listoftables = {"Untitled 5", "Untitled 4", "Untitled 3"};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( listoftables ), i++,
dt = Data Table( listoftables[i] );
dt<<NEW column=""></NEW>