Valutazione della tabella dati nel ciclo For 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 = {"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] );
);
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 si verificano errori!
Automazione e scriptingAccesso ai datiPersonalizzazione di massaRi: Valutazione della tabella dati nel ciclo For da un elencoGrazie mille.Si è verificato un problema con uno dei nomi di tabella e una tabella era una tabella privata.
Ri: Valutazione della tabella dati nel ciclo For da un elenco@utente8421 ,
Hai eseguito con successo @jthi la sceneggiatura?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 Guida allo scripting JMP afferma che per la tabella privata
- Le tabelle private non vengono conteggiate quando N Table() restituisce il numero di tabelle di dati aperte.
- Le tabelle private non possono essere rese aggiornate con Current Data Table().
Questo mi ha fatto pensare che una tabella privata potrebbe non avere le stesse funzionalità, potrebbe non avere i nomi archiviati in memoria poiché non viene conteggiata.
Buona fortuna!
Ri: Valutazione della tabella dati nel ciclo For da un elencoMi dispiace, mi sono reso conto che mi mancavano alcune parti della mia sceneggiatura mentre semplificavo.
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
Ri: Valutazione della tabella dati nel ciclo For da un elencoSembra che ti 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])
);Ri: Valutazione della tabella dati nel ciclo For 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])
);