Valutazione della tabella dati in For Loop da un elencoContinuo a riscontrare un errore con il mio script per rinominare le tabelle di dati utilizzando un ciclo For.
Ecco una versione semplificata del mio script
OldNames = {"Vecchio nome 1", "Vecchio nome 2", "Vecchio nome 3"};
NewNames = {"Nuovo nome 1", "Nuovo nome 2", "Nuovo nome 3"};
Per(
io,
i <= NNomi,
io++,
dt = Tabella dati(OldNames[i]);
dt << Imposta nome(NuoviNomi[i])
);
Continuo a ricevere il seguente errore
Impossibile individuare la tabella dati nell'accesso o nella valutazione di 'Tabella dati', Tabella dati/*###*/( OldNames[i] )
Tuttavia, quando valuto Data Table (OldNames[1]) non ci sono errori!
Tabella datiRe: Valutazione della tabella dati in For Loop da un elencoCiao,
Ho modificato di conseguenza i primi due argomenti del ciclo For.Dovrebbe funzionare ora:
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: Valutazione della tabella dati in For Loop da un elencoSembra che manchi almeno la definizione per i (i = 1), inoltre non sono sicuro di cosa sia NNames.
Questo dovrebbe essere un esempio funzionante:
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: Valutazione della tabella dati in For Loop da un elencoScusa mi sono reso conto di aver perso le parti della mia sceneggiatura mentre stavo semplificando.
NNomi = NItems(NuoviNomi);
e i=1 per il primo argomento nel ciclo For.
Anche con entrambi quelli definiti correttamente nel mio script, ricevo ancora lo stesso messaggio di errore
Re: Valutazione della tabella dati in For Loop da un elenco@utente8421 ,
Hai eseguito correttamente @jthi il copione?Se sì, allora sospetto:
- uno o più tavoli sono chiusi
- uno o più tavoli sono privati
- vecchi nomi sbagliati.
Di seguito è riportata una leggera modifica a @jthi la sceneggiatura. Rendo privata la terza tabella e aggiungo istruzioni show al ciclo 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]);
);
Ecco l'output del registro
/*:
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
La JMP Scripting Guide afferma per la tabella privata che
- Le tabelle private non vengono conteggiate quando N Table() restituisce il numero di tabelle di dati aperte.
- Le tabelle private non possono essere aggiornate con Current Data Table().
Questo mi ha fatto pensare che una tabella privata potrebbe non avere la stessa funzionalità, potrebbe non avere i nomi archiviati in memoria poiché non viene conteggiata.
Buona fortuna!
Re: Valutazione della tabella dati in For Loop da un elencoGrazie mille.Era un problema con uno dei nomi delle tabelle e una tabella essendo una tabella privata.