Évaluation de la table de données dans la boucle For à partir d'une listeJe continue à 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 = {"Ancien nom 1", "Ancien nom 2", "Ancien nom 3"} ;
NewNames = {"Nouveau nom 1", "Nouveau nom 2", "Nouveau nom 3"} ;
Pour(
je,
i <= NNoms,
je++,
dt = Table de données (Anciens noms[i]);
dt << Définir le nom (NouveauxNoms[i])
);
Je reçois toujours l'erreur suivante
Impossible de localiser la table de données dans l'accès ou l'évaluation de 'Data Table' , Data Table/*###*/( OldNames[i] )
Cependant, lorsque j'évalue Data Table(OldNames[1]), il n'y a pas d'erreur !
Tableau de donnéesRe: É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])
);
Re: Évaluation de la table de données dans la boucle For à partir d'une listeVous semblez manquer au moins la définition de i (i = 1), je ne sais pas non plus ce qu'est NNames.
Cela devrait fonctionner exemple:
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 listeDésolé, j'ai réalisé que j'avais raté des 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 définis correctement 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 liste@ utilisateur8421 ,
Avez-vous exécuté avec succès @jthi le script de ?Si oui, alors je soupçonne :
- une ou plusieurs tables sont fermées
- une ou plusieurs tables sont privées
- mauvais vieux noms.
Ci-dessous, une légère modification de @jthi le script de. 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 JMP Scripting Guide indique pour la table privée 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 la même fonctionnalité, pourrait ne pas avoir les noms stockés en mémoire car elle n'est pas comptée.
Bonne chance!
Re : Évaluation de la table de données dans la boucle For à partir d'une listeMerci beaucoup.C'était un problème avec l'un des noms de table et une table étant une table privée.