Come chiudere il filtro dati della tabella esistente all'inizio del nuovo scriptHo uno script che aggiunge un filtro a una tabella di dati che è già aperta. A volte un utente ha già aperto (manualmente) un filtro dati su quella tabella prima che lo script venga richiamato.
Un tale filtro di dati esistente sembra interferire con il mio nuovo filtro con script che ha effetto, anche se eseguo un dt << Clear Row States all'inizio del mio script.
Quindi mi piacerebbe avere una dichiarazione all'inizio del mio script che chiuda tutti i filtri di tabella esistenti. Ma non riesco a capire come fare riferimento a un filtro dati aperto arbitrario che qualcun altro ha già creato al di fuori del mio script. Suggerimenti?
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo scriptHo trovato nello Scripting Index che si può fare riferimento a una tabella di dati tramite
dt = data table(i);
dt = data table(name);
e ottenere il nome tramite
dt << get name();
C'è anche una funzione per ottenere "i".
Intendo direttamente, non tramite
Loc(Get Data Table List(),data table(2))
Oh, ho appena notato che i filtri dati hanno il proprio indice, indipendente dalle rispettive tabelle dati...
Così Filtro dati[i] non può essere utilizzato per accedere a un filtro dati specifico (tramite tabella dati-> i --> filtro dati)?
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo scriptData Filter[i]
fresco!
Dove è documentato?
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo scriptScherzando, ho trovato una soluzione semplice:
For( i = N Items( Get Window List() ), i >= 1, i--,
Try(
Data Filter[i] << Close;<BR /> Data Table[i] << Clear Row States // optional, if you want to<BR /> )<BR />);Non avevo idea della sintassi Data Filter[i]. Lo rende semplice.
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo scriptGrazie mille, gz.
La funzione xpath è fantastica! Si dà il caso che provengo da un background XML e ho utilizzato xpath in passato. Ma ero completamente all'oscuro che potevi usarlo in questo modo in JMP.E fino ad ora ho trovato difficile navigare negli alberi di visualizzazione. Quindi questa è una vera scoperta. Molto utile!
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo script@john_madden ,
Se vuoi solo che il pulsante di selezione del ripristino venga premuto a un certo punto, ecco lo script.
Questa sceneggiatura
- cerca un filtro dati tabella.
- Se trovato, cerca un pulsante visibile con il titolo "Reimposta selezione".
- Se il pulsante viene trovato, fai clic su di esso.
Names Default to Here(1);
dt = current data table();
dtname = dt << get name;
winList = get window List();
found = 0; _xzz=empty();
For(i=nitems(winList), i>=1 & !found, i--,
nme = winList[i] << Get Window Title;
If(Starts With(nme,"Data Filter") & Contains(nme,dtname),
found =1;
_xzz = winList[i] <<XPATH> 0, _xzz[1] << Click);
);
);</XPATH>
Se desideri che questa azione venga eseguita più che all'inizio dello script, avrai bisogno di un gestore o di una sottoscrizione per definire quando deve essere eseguita.
Spero che sia d'aiuto.
La sintassi XPath può sembrare un po' strana, ma è molto potente poiché la struttura ad albero del report JMP ha una descrizione XML associata.Ho allegato uno script scritto per il capitolo 6, sezione "Scriptable Object and XPath" di JSL Companion, Applicazioni del linguaggio di scripting JMP, seconda edizione . Lo script fornisce un'introduzione limitata, alcuni semplici esempi e collegamenti per saperne di più.
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo script@john_madden ,
Non mi è chiaro quale azione desideri. Per esempio:
- Ex1: Supponiamo che Big Class sia aperta, il filtro dati associato era sull'età della colonna e nel filtro sono stati selezionati ragazzi di 13 e 14 anni. Quindi un'altra domanda ha selezionato ragazze di 15 anni. Apparirà il pulsante Reimposta. Se cliccato, restituisce la selezione della tabella definita nel filtro dati della tabella. E 'questo quello che vuoi?
- Ex2: stesso scenario iniziale di Ex1, ma un utente elimina un paio di righe dalla tabella dati. Il pulsante Reimposta non viene visualizzato e le selezioni precedenti non vengono più visualizzate nel filtro dati.
Esistono metodi/funzioni chiamati "gestori" per un filtro dati e una tabella
- Crea gestore del filtro dati
- Crea gestore dello stato di riga
- Sottoscrivi (per una tabella dati)
Una volta definita/abilitata, è possibile intraprendere un'azione se gli stati delle righe cambiano, le righe vengono eliminate e altro ancora.
Se sei interessato solo al pulsante Reimposta, sospetto (non l'ho ancora testato), lo script precedente che ho inviato può essere modificato per trovare il filtro dati e se il pulsante Reimposta non è compresso (è visibile) è possibile fare clic inviato ad esso. Tuttavia, prima di inviare uno script modificato, sarebbe utile una migliore descrizione dell'azione prevista.
Un'altra considerazione, se un utente aggiunge un filtro dati locale su un report, la tabella e se dispone di un filtro dati non riflette le selezioni dell'utente dal filtro dati locale del report.
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo scriptFunziona, ma penso di aver capito un po' più in dettaglio cosa sta succedendo, il che potrebbe suggerire un'altra soluzione.
Se crei una tabella con un filtro e poi modifichi la selezione della riga della tabella altrove (questo è il mio caso), nel filtro dati appare quanto segue:


Penso che ciò di cui ho bisogno sia l'equivalente dello script di premere il pulsante "Ripristina selezione".
È possibile?
Ri: Come chiudere il filtro dati della tabella esistente all'inizio del nuovo script@john_madden ,
A partire da JMP 14, l'unico metodo che conosco è tramite la forza bruta. Vedi sotto. Nota Ricominciare cancella lo stato di selezione della tabella
Names Default to Here(1);
dt = current data table();
dtname = dt << get name;
winList = get window List();
found = 0;
For(i=nitems(winList), i>=1 & !found, i--,
nme = winList[i] << Get Window Title;
If(Starts With(nme,"Data Filter") & Contains(nme,dtname),
found =1;
(winList[i] << child << get scriptable object) << Start Over;
window(nme) << close window();
);
show(i, nme, found);
);
Se stai lavorando con un'applicazione e l'utente aggiunge un filtro dati locale e le tue analisi lo richiedono rimosso, puoi utilizzare XPath per trovarlo, ottenere lo script, eliminare il filtro trovato, eseguire l'analisi e ripristinare tramite lo script salvato.
Il JSL allegato di seguito mostra come utilizzare XPath per ottenere un handle per un filtro di dati su un'analisi specifica.
Spero che sia d'aiuto.