Datentabellenauswertung in der For-Schleife aus einer ListeBei meinem Skript zum Umbenennen von Datentabellen mithilfe einer For-Schleife tritt immer wieder ein Fehler auf.
Hier ist eine vereinfachte Version meines Skripts
OldNames = {"Old Name 1", "Old Name 2", "Old Name 3"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For( i, i <= NNames, i++,
dt = Data Table( OldNames[i] );
dt << Set Name( NewNames[i] );
);
Ich erhalte ständig die folgende Fehlermeldung
Die Datentabelle kann beim Zugriff oder bei der Auswertung von „Data Table“, Data Table/*###*/( OldNames[i]) nicht gefunden werden.
Wenn ich jedoch Data Table(OldNames[1]) auswerte, gibt es keinen Fehler!
Automatisierung und SkripterstellungDatenzugriffMassenanpassungBetreff: Datentabellenauswertung in der For-Schleife aus einer ListeVielen Dank.Es gab ein Problem damit, dass einer der Tabellennamen und eine Tabelle eine private Tabelle war.
Betreff: Datentabellenauswertung in der For-Schleife aus einer Liste@user8421 ,
Hast du erfolgreich gelaufen? @jthi 's Drehbuch?Wenn ja, dann vermute ich:
- Einer oder mehrere der Tische sind geschlossen
- Einer oder mehrere der Tische sind privat
- falsche alte Namen.
Nachfolgend finden Sie eine geringfügige Änderung @jthi 's Drehbuch. Ich mache die dritte Tabelle privat und füge show-Anweisungen zur For-Schleife hinzu.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt = Open("$SAMPLE_DATA/Quality Control/Failures3Delimited.jmp");
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp", "Private");
OldNames = {"Big Class", "Failures3Delimited", "Semiconductor Capability"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(i = 1, i <= N Items(OldNames), i++,
show(i, OldNames[i], NewNames[i]);
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i]);
);
Hier ist die Protokollausgabe
/*:
i = 1;
OldNames[i] = "Big Class";
NewNames[i] = "New Name 1";
i = 2;
OldNames[i] = "Failures3Delimited";
NewNames[i] = "New Name 2";
i = 3;
OldNames[i] = "Semiconductor Capability";
NewNames[i] = "New Name 3";
Cannot locate data table in access or evaluation of 'Data Table' , Data Table/*###*/(OldNames[i])
at line 11 in Script.jsl
Im JMP-Skripthandbuch heißt es für private Tabellen:
- Private Tabellen werden nicht gezählt, wenn N Table() die Anzahl der offenen Datentabellen zurückgibt.
- Private Tabellen können mit Current Data Table() nicht aktuell gemacht werden.
Dies ließ mich denken, dass eine private Tabelle möglicherweise nicht die gleiche Funktionalität hat und die Namen möglicherweise nicht im Speicher gespeichert sind, da sie nicht gezählt werden.
Viel Glück!
Betreff: Datentabellenauswertung in der For-Schleife aus einer ListeEs tut mir leid, dass mir beim Vereinfachen aufgefallen ist, dass ich Teile meines Skripts übersehen habe.
NNames = NItems(NewNames);
und i=1 für das erste Argument in der For-Schleife.
Selbst wenn beide in meinem Skript korrekt definiert sind, erhalte ich immer noch die gleiche Fehlermeldung
Betreff: Datentabellenauswertung in der For-Schleife aus einer ListeIhnen scheint zumindest die Definition für i (i = 1) zu fehlen, außerdem bin ich mir nicht sicher, was NNames ist.
Dies sollte ein funktionierendes Beispiel sein:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt = Open("$SAMPLE_DATA/Quality Control/Failures3Delimited.jmp");
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
OldNames = {"Big Class", "Failures3Delimited", "Semiconductor Capability"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(i = 1, i <= N Items(OldNames), i++,
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i])
);Betreff: Datentabellenauswertung in der For-Schleife aus einer ListeHallo,
Ich habe die ersten beiden Argumente der For-Schleife entsprechend geändert.Es sollte jetzt funktionieren:
OldNames = {"Old Name 1", "Old Name 2", "Old Name 3"};
NewNames = {"New Name 1", "New Name 2", "New Name 3"};
For(
i=1,
i <= NItems(NewNames),
i++,
dt = Data Table(OldNames[i]);
dt << Set Name(NewNames[i])
);