chiudendo tutte le tabelle di dati ma lasciandone una aperta per ulteriori analisiCiao a tutti
Questo è il seguito del post:
https://community.jmp.com/t5/Discussions/JSL-How-to-close-data-tables-after-analysis/mp/36739
Tuttavia, ho riscontrato un errore nel mio script durante l'esecuzione di JSL Debgger.
DontClose = ("dt4"); // Example names of tables you want to leave
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i >= 0, i--,
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);Lo script funziona correttamente poiché chiude tutte le tabelle tranne dt4 ma ottengo un errore come mostrato nel file allegato sotto l'istruzione If. Qualcuno ha idea di cosa si riferisca?
Lo script funziona correttamente e chiude tutte le tabelle tranne dt4, tuttavia, ho problemi durante l'estensione dello script dopo questo punto. Ho uno script di generatore di grafici da lanciare dopo questo punto per la tabella dt4 ma non fa nulla. Quindi mi chiedo se questo errore qui stia interrompendo lo script per continuare con i passaggi successivi.
Ri: chiudere tutte le tabelle di dati ma lasciarne una aperta per ulteriori analisiè perché sei >= 0.Non esiste una tabella dati 0
renderlo >= 1 o >0
DontClose = ("dt4"); // Example names of tables you want to leave
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i >= 1, i--,
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);Ri: chiudere tutte le tabelle di dati ma lasciarne una aperta per ulteriori analisiGrazie per il consiglio. Ho cambiato l'approccio e ora chiudo le tabelle di dati in precedenza sullo script. Lo script è in realtà più veloce ora. Grazie
Ri: chiudere tutte le tabelle di dati ma lasciarne una aperta per ulteriori analisiPhil, stavo pensando la stessa cosa.È importante notare che i nomi di tabella non possono essere duplicati, quindi se provi a creare un nuovo nome di tabella "dt4" e c'è già una tabella "dt4", JMP la chiamerà "dt4 2".È improbabile che i nomi delle tabelle siano quelli che ti aspetti, motivo per cui ritengo che il codice sopra sia un modo scadente per risolvere il problema in questione.
Ho appena guardato il post linkato nel post originale.Il codice di Uday è molto più pronto per la produzione.Sfortunatamente, l'OP sta usando la semplificazione di txnelson, che è solo una semplificazione ed è dove sta avendo tutti i suoi problemi.
Ri: chiudere tutte le tabelle di dati ma lasciarne una aperta per ulteriori analisi"dt4" è il vero nome del tuo tavolo?Sembra più probabile che sia il nome della variabile che hai definito per la tabella nel tuo script? Penso che il tuo script stia cercando il nome della tabella, ovvero quello che vedi nella parte superiore della tabella JMP, ad esempio "Big Class":
Questo è un semplice esempio (dall'indice di scripting) della funzione Get Name() utilizzata nello script:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
n = dt << Get Name();
Show( n );
A proposito, potrei sbagliarmi sul fatto che questa sia la causa del tuo problema!
Ri: chiudere tutte le tabelle di dati ma lasciarne una aperta per ulteriori analisiLe tue tabelle potrebbero essere tabelle collegate. Vedi sotto l'esempio.Quello o c'è un errore con il tuo script e il tuo riferimento alla tabella sbagliata per sbaglio.Questo è probabile poiché stai cercando tabelle per nome.
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = dt1 << Summary(
Group( :height ),
Freq( "None" ),
Weight( "None" )
);
close(dt1, "nosave"); //closes both dt1 and dt2 since dt2 is dependant on dt1
Ad ogni modo, il codice sopra è un modo scadente per gestire le tabelle di chiusura.Innanzitutto, chiuderai le tabelle non correlate al tuo script, facendo potenzialmente arrabbiare gli utenti che hai chiuso le altre cose su cui stavano lavorando.In secondo luogo, lasciare le tabelle che non ti servono fino alla fine per chiuderle è un uso inefficiente della memoria.Sarebbe una pratica/schema migliore chiudere le tabelle subito dopo l'uso invece di aspettare fino alla fine dello script.Se le tabelle sono necessarie per l'intero script, ti consiglio di tenere traccia delle tabelle in un elenco in modo da chiudere solo quelle relative al tuo script.
Ri: chiudere tutte le tabelle di dati ma lasciarne una aperta per ulteriori analisiCiao Uday,
L'ho modificato ma ottengo ancora lo stesso errore in JSL Debugger.
Ri: chiudere tutte le tabelle di dati ma lasciarne una aperta per ulteriori analisi@ivomdb ,
L'errore visualizzato in genere si verifica se si fa riferimento a una tabella di dati di cui JMP non conosce l'esistenza o che non dispone di alcun riferimento per accedere alla tabella. Ciò accade principalmente quando il riferimento alla tabella dati viene perso o è stato chiuso prima di essere referenziato.
Un modo per risolvere questo problema consiste nel fare quanto segue.
Dovresti anche cercare di assicurarti che il tavolo non venga chiuso prematuramente.
DontClose = ("dt4"); // Example names of tables you want to leave
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i >= 0, i--,
Current Data Table(Data Table(i)); // This should make the data table you are working with active and current
If( Contains( DontClose, Data Table( i ) << get name ),
Continue();
,
// else
Close( Data Table( i ), "No Save" );
)
);<BR />