Come aggiornare la tabella dopo l'ordinamento?Ciao a tutti,
Ho un problema relativo all'ordinamento di una tabella. Volevo ordinare la tabella per data (che si trova nella colonna Date1) e lo sto facendo dopo che sono state soddisfatte determinate condizioni. Tuttavia, non ordina e sostituisce la tabella EL_summary dopo lo smistamento. È necessario rinfrescare? Ho messo anche un po' di ritardo, ho pensato che bisognava aspettare un po' di tempo. Quando non sto usando sostituisci tabella(1), la nuova tabella con un nome diverso viene creata e aperta (cosa che non voglio) e ancora una volta i dati in questa tabella non vengono ordinati. Successivamente, tuttavia, i dati in EL_summary sembra essere aggiornato e ordinato. Apprezzerei per aver indicato ciò che mi manca. Distinti saluti
Tabella dati correnti( EL_summary );
if( N righe(EL_summary) > 0, EL_summary << sort(by(:name("Date1")), Order( Ascending ), replace table(1)));
aspetta(1);
Re: Come aggiornare la tabella dopo l'ordinamento?Ciao, qual è il modo ufficiale per ordinare una tabella di dati tramite JSL con l'opzione Sostituisci tabella ()?
Come discusso in precedenza, se sono presenti report aperti, lo script si arresta in modo anomalo con il messaggio di errore:

... anche se il grafico non dipende dall'ordinamento nella tabella dei dati:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
dt<< Sort( By( :height ), Replace Table, Order( Ascending ));
Che ne dici di sostituire il testo con qualcosa del tipo:
Sfortunatamente, nell'attuale versione di Jmp, non è possibile ordinare una tabella con report aperti.
Jmp non può sostituire la tabella esistente perché c'è qualche possibilità ... hm, sai, le finestre dei report potrebbero dipendere dall'ordinamento precedente. Sfortunatamente, non è possibile verificarlo e non è possibile ignorarlo. Quindi il copione si fermerà qui.

Re: Come aggiornare la tabella dopo l'ordinamento?Ok, riesco a nascondere la nuova tabella dati. Quella tabella dati era la tabella dati corrente, quindi ho disabilitato la sua visibilità utilizzando
Current Data Table() << ShowWindow( 0 );
Grazie a tutti per il supporto. Distinti saluti.
Re: Come aggiornare la tabella dopo l'ordinamento?Puoi gestirlo in un paio di modi diversi.
L'output che impedisce l'ordinamento della tabella dati può essere spostato in un Journal per la visualizzazione e la visualizzazione originale può quindi essere eliminata, il che consentirà l'ordinamento.
Puoi anche creare una nuova tabella di dati invisibile o privata, che impedirà la visualizzazione della nuova tabella di dati.Cerca le opzioni Invisibile o Privato nel sottoinsieme della tabella dati nell'indice di scripting.
Re: Come aggiornare la tabella dopo l'ordinamento?Ciao, grazie per i suggerimenti!
Ho creato una GUI e l'ordinamento deve essere eseguito dopo aver selezionato un elemento dalla casella di riepilogo. Successivamente, alcune immagini devono essere visualizzate in questa GUI nell'ordine basato sui valori ordinati. In realtà, JMP non fornisce alcuna informazione di registro utile che indichi l'origine del problema. C'è un modo per nascondere o rendere invisibile il nuovo (e indesiderato) datatable che viene creato dopo l'ordinamento? Sarebbe una soluzione alternativa.
Re: Come aggiornare la tabella dopo l'ordinamento?CIAO,
Questo codice ha funzionato come previsto quando non ci sono grafici aperti:
Untitled = data table("Untitled.jmp");
if( N rows(Untitled) > 0, Untitled << sort(by(:name("Column 1")), Order( Ascending ), replace table(1)));
Ma l'ordinamento non funziona se hai dei grafici aperti,
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending ), replace table(1)));
</DISTRIBUTION>
Guarda il file di registro e vediamo:
JMP cannot replace the existing table because there are report windows that depend on the previous ordering.
Ma se rimuoviamo la tabella di sostituzione, verrà eseguita senza errori ma avvierà un nuovo datatable con le righe ordinate che non è desiderato.
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending )));</DISTRIBUTION>
Quindi puoi controllare il file di registro per vedere se è informativo. Se hai grafici o tabelle dipendenti aperti, forse devi ripensare la logica dello script. Ad esempio, è possibile riordinare prima di creare tabelle e grafici dipendenti.
Re: Come aggiornare la tabella dopo l'ordinamento?la tua tabella di dati è collegata a una tabella precedente, quindi non può essere modificata?Re: Come aggiornare la tabella dopo l'ordinamento?Utilizzare Prova per rilevare l'errore e quindi gestire l'errore di conseguenza.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(437, 413),
Graph Spacing(4),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2)))
);
Try(
dt << Sort(By(:height), Replace Table, Order(Ascending));
,
If(Starts With(exception_msg[1], "JMP cannot replace the existing table because there are report windows"),
dt1 = dt << Sort(By(:age), Order(Ascending)); // will create new table
/*
// if you wish to just keep one, order to create new, close old and rename new
old_name = dt << get name;
Close(dt, no save)
dt1 << set name(old_name);
dt = dt1;
*/
);
);
Utilizzo di JMP > Rimodella i tuoi dati > Ordina tabelle dati
Sostituisci tabella
Sostituisce la tabella dati originale con la tabella ordinata invece di creare una nuova tabella con i valori ordinati. Questa opzione non è disponibile se sono presenti finestre di report aperte generate dalla tabella originale.
Re: Come aggiornare la tabella dopo l'ordinamento?Hm, con questa soluzione lo script non andrà in crash...
d'altra parte: i dati non verranno ordinati ma verrà generata una nuova tabella 
Al momento, preferirò qualcosa del tipo:
Try (sort,
Caption("Sorry, not possible to sorting the table, please close all reports and sort manually");stop());
Per il futuro, spero che ci sarà qualcosa di simile
Tabella dati: ottieni rapporti (e altre opzioni)
Try(
sort,
If( New Window( "ask User", ... ),
myAffectedReports = dt << get reports with ordering issues();
myAffectedReports << close window;
sort;
)
)
O
sort(..., ignoreEffectOnReports())
O
sort(..., closeReportsWithOrderingIssue());
Re: Come aggiornare la tabella dopo l'ordinamento?Voglio scrivere un componente aggiuntivo che ordina la tabella dei dati.
Invece di provare (ordinare, messaggio di errore) da qualche parte all'interno dell'esecuzione del componente aggiuntivo, voglio informare l'utente all'inizio che deve chiudere tutti i rapporti prima di avviare il componente aggiuntivo.
Come posso farlo con Jmp17?
Re: Come aggiornare la tabella dopo l'ordinamento?Un'opzione:
- Usa << Ottieni elenco finestre per ottenere riferimenti a tutte le finestre aperte (puoi limitarlo a Tipo ("Report") se lo desideri)
- Passa su quell'elenco e controlla se ce ne sono che dipendono dalla tabella di dati ordinata (dovresti essere in grado di utilizzare il nome della finestra del report OPPURE << Ottieni tabella dati. Se il report appartiene alla tabella dati, aggiungilo all'elenco
- Se ci sono elementi nell'elenco, mostra il messaggio all'utente
Re: Come aggiornare la tabella dopo l'ordinamento?Funziona benissimo grazie 
closeMyReports = Function( {dt},
{default local},
AllmyReports = {};
myReports = Get Window List( Type( "Reports" ) );
For Each( {rep}, myReports,
Try(
myList = (rep << Xpath( "//OutlineBox" )) << get scriptable Object();
myDTs = Transform Each( {scriptableObject}, myList, If( Is Empty( scriptableObject ), ., scriptableObject << Get Data Table() ) );
If( Contains( myDTs, dt ),
Insert Into( AllmyReports, rep )
);
)
);
If( N Items( AllmyReports ) > 0,
If(
ex = New Window( "",
<<TYPE></TYPE>
modificare: ora lo script controlla anche rapporti più complessi con molte tabelle di dati.
Re: Come aggiornare la tabella dopo l'ordinamento?Passaggio successivo: esiste un comando:
dt << get linked subsets()
