Évaluation de la table de données dans la boucle For à partir d'une listeJe continue de rencontrer une erreur avec mon script pour renommer les tables de données à l'aide d'une boucle For.
Voici une version simplifiée de mon script
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] );
);
Je reçois toujours l'erreur suivante
Impossible de localiser la table de données lors de l'accès ou de l'évaluation de 'Data Table' , Data Table/*###*/( OldNames[i] )
Cependant, lorsque j'évalue Data Table(OldNames[1]), il n'y a aucune erreur !
Automatisation et scriptsAccès aux donnéesPersonnalisation de masseRe : Évaluation de la table de données dans la boucle For à partir d'une listeMerci beaucoup.Il s'agissait d'un problème avec l'un des noms de table et l'une des tables étant une table privée.
Re : Évaluation de la table de données dans la boucle For à partir d'une liste@utilisateur8421 ,
Avez-vous réussi à exécuter @jthi le scénario ?Si oui, alors je soupçonne :
- une ou plusieurs tables sont fermées
- une ou plusieurs tables sont privées
- de mauvais vieux noms.
Vous trouverez ci-dessous une légère modification à @jthi le scénario. Je rends la 3ème table privée et j'ajoute des instructions show à la boucle For.
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]);
);
Voici la sortie du journal
/*:
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
Le Guide de script JMP indique pour les tables privées que
- Les tables privées ne sont pas comptées lorsque N Table() renvoie le nombre de tables de données ouvertes.
- Les tables privées ne peuvent pas être mises à jour avec Current Data Table().
Cela m'a fait penser qu'une table privée pourrait ne pas avoir les mêmes fonctionnalités, ne pas avoir les noms stockés en mémoire puisqu'elle n'est pas comptée.
Bonne chance!
Re : Évaluation de la table de données dans la boucle For à partir d'une listeDésolé, j'ai réalisé que j'avais manqué certaines parties de mon script pendant que je simplifiais.
NNames = NItems(NouveauxNoms);
et i=1 pour le premier argument de la boucle For.
Même avec les deux éléments correctement définis dans mon script, j'obtiens toujours le même message d'erreur
Re : Évaluation de la table de données dans la boucle For à partir d'une listeIl semble qu'il vous manque au moins une définition pour i (i = 1), et je ne suis pas non plus sûr de ce qu'est NNames.
Cela devrait être un exemple fonctionnel :
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])
);Re : Évaluation de la table de données dans la boucle For à partir d'une listeSalut,
J'ai modifié les deux premiers arguments de la boucle For en conséquence.Cela devrait fonctionner maintenant :
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])
);