Chiude tutte le tabelle di dati tranne un elenco di nomi di variabiliOggi sto provando a chiudere tutte le tabelle dati tranne un numero selezionato poiché viene eseguita una procedura ripetuta utilizzando le variabili Nome tabella dati.Ho tre tavoli.Uno in cui vengono raccolti i risultati, uno in cui vengono raccolti i risultati non validi della prima tabella e uno che l'utente apre affinché lo script sappia quali valori ID utilizzare per il confronto.Ho trovato una discussione in cui le tabelle possono essere chiuse (è stata inclusa nel mio script qui), ma utilizza testo tra virgolette in un elenco per i nomi delle tabelle.Poiché i miei utenti sceglieranno una tabella dati diversa per ogni iterazione della terza tabella, come posso utilizzare una variabile del nome della tabella dati per includerla nell'elenco e lasciarla aperta alla fine dell'elaborazione?
DontClose = {CompareTable, CollectionTable, IDTable}; // Example names of tables you want to leave open
//CompareTable = "Validation Table"
//Collection Table = "Unmatched Values"
//IDTable = could be anything but I want to leave this open once the processing loop is completed
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
print( Data Table(i) << Get Name ) ;
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabiliPotrebbe funzionare, ma è simile alla generazione di un'istruzione Close() per ogni tabella una volta completato il suo utilizzo. Stavo cercando di usare qualcosa di un po' più elegante che utilizzi meno linee. L'altra opzione simile che ho provato è quella di inserire tutti i nomi di tabella in un elenco e avere un elenco di conservazione con cui confrontarli, il problema è che una delle tre tabelle che deve rimanere aperta viene selezionata dall'utente, quindi cambia da utilizzo a utilizzo. Questo è l'unico motivo per cui utilizzo i nomi delle tabelle alias. Questo e non appena lo condividerò con qualcuno, cambierà il nome della tabella in cui risiede lo script, quindi preferirei non codificare i nomi delle tabelle di dati dove non ne ho bisogno. È un vero enigma! Grazie per la tua risposta!Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabiliNon riesco a pubblicare l'intero script. Accede a server proprietari e mi occorrerebbe molto tempo per creare una versione anonima. Ma mi hai fatto pensare che non ne tenevo conto ed è per questo che la cosa è stata bloccata. Metterò alla prova la mia teoria e riferirò!
GRAZIE!Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabiliDato che generi tutte le tabelle di dati da distruggere, perché non inserire ciascun riferimento di tabella in un elenco man mano che viene creato? È quindi possibile scorrere l'elenco quando è il momento di chiuderli.
Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabiliPuoi pubblicare la tua sceneggiatura?
La chiusura delle tabelle che hanno tabelle di riepilogo collegate chiuderà automaticamente la tabella di riepilogo.
Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabiliOh mio! Ho parlato troppo presto. Ho provato con l'apertura delle tabelle e la chiusura utilizzando questo script.
Ciò che fa il mio script è aprire due tabelle che deve lasciare aperte per l'esecuzione completa dello script. Uno è l'obiettivo per i confronti non uguali e l'altro contiene un elenco di ID (selezionati dall'utente). Quindi estrae i dati dai server, esegue una serie di riepiloghi, trasposizioni e altre manipolazioni dei dati, copia i risultati nella tabella in cui risiede lo script e le differenze nella tabella di destinazione (entrambi devono essere lasciati aperti), quindi chiude tutto il riepilogo tabelle e tabelle generate dai server prima di passare all'ID successivo.
Continuo a ricevere un errore come questo:
Impossibile individuare la tabella dati{28} nell'accesso o nella valutazione di 'Tabella dati', Tabella dati/*###*/(i)
perchè si sta perdendo il numero del tavolo?Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabili@Wendy_Murphrey Questo è il biglietto!Funziona proprio come mi serve.Poiché questo script può aprire o produrre centinaia di tabelle, è perfetto per le mie esigenze.
Grazie, grazie, grazie!Imparo qualcosa di nuovo ogni giorno in JSL!
Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabili@guillaumebugnon Vedo che TUTTE le tabelle avrebbero bisogno di quel set di variabili.Lo script che sto scrivendo si apre e genera una moltitudine di tabelle, quindi questo aggiungerebbe un passaggio che ritengo sia meglio lasciare per scopi meno intensivi.Ciò che alla fine desidero fare è avere un elenco di ID (potrebbero essere più di 200) e fare in modo che lo script esegua un processo per produrre almeno 75 riepiloghi per ciascun ID.Anche se funzionerà, sembra che la soluzione di Wendy Murphrey sia perfetta per la mia applicazione.
Grazie per aver dedicato del tempo per aiutarmi con il mio dilemma!
Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabiliEcco un approccio che ti consente di utilizzare i riferimenti alla tabella dati:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt3 = Open( Pick File( "Select File", "$DOCUMENTS" ) );
dontClose = Eval List( {dt, dt2, dt3} );
Show( dontClose );
// 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 ) ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);
Spero che aiuti!
Ri: Chiudere tutte le tabelle di dati tranne un elenco di nomi di variabiliCiao,
Puoi anche impostare una variabile di tabella su ciascun datatable jmp:
dt << Set Table Variable("ToClose","N");Quindi puoi eseguire il loop e controllare il valore:
For( i = N Table(), i > 0, i--,
vtoclose = Data Table(i) << Get Table Variable ("ToClose") ;
If ( Contains(vtoclose,"Y") >=1 ,
Close(Data Table(i),NoSave),
print("ToClose is not set to Y : do not close")
);
);