Rilevamento delle modifiche in un filtro dati locale<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Di seguito è riportato uno script che utilizza un filtro dati che, quando viene modificato, attiva il gestore dello stato della riga e aggiorna il grafico.Vorrei davvero utilizzare un filtro locale, ma non sono riuscito a capire come rilevare la modifica nel filtro locale.Come si rileva una modifica nel filtro dati locale?
Nomi predefiniti qui ( 1 ) ;
dt = Aprire ( "$SAMPLE_DATA\capacità semiconduttori.jmp" ) ;
F = Funzione ( { UN } ,
// Cattura LCL e UCL dalla casella di riepilogo dei limiti nell'output del report
myLCL = ( Rapporto ( CCB )[ "Riepiloghi dei limiti NPN1" ][ Scatola da tavolo ( 1 )][ 2 ] << Ottenere )[ 1 ] ;
miaUCL = ( Rapporto ( CCB )[ "Riepiloghi dei limiti NPN1" ][ Scatola da tavolo ( 1 )][ 4 ] << Ottenere )[ 1 ] ;
// Riapplica alla carta di controllo le nuove impostazioni degli assi
Rapporto ( CCB )[ Scatola dell'Asse ( 3 )] << minimo ( myLCL ) ;
Rapporto ( CCB )[ Scatola dell'Asse ( 3 )] << Massimo ( miaUCL ) ;
) ;
rs = dt << crea il gestore rowstate ( F ) ;
Nuova finestra ( "Esempio funzionante" ,
Casella Contesto filtro dati (
Casella di riepilogo H (
dt << Filtro dati ( Aggiungi filtro ( Colonne ( : LUOGO ) ) , Modalità ( Selezionare ( 1 ) , spettacolo ( 1 ) , includere ( 1 )) ) ,
piattaforma ( dt ,
CCB = Costruttore di carte di controllo (
Misurare ( 534 , 453 ) ,
Mostra Pannello di controllo ( 0 ) ,
Variabili ( Y ( : NPN1 ) ) ,
Grafico ( Posizione ( 1 ) , Limiti ) ,
Grafico ( Posizione ( 2 ) ) ,
Invia a rapporto (
Spedizione (
{} ,
"NPN1" ,
ScaleBox ,
{ minimo ( 96.6346153846154 ) , Massimo ( 131.634615384615 ) , Inc ( 5 ) , Zecche minori ( 0 ) ,
Aggiungi linea di riferimento ( 104.412948990151 , "Solido" , "Blu" , "LSL" , 1 ) ,
Aggiungi linea di riferimento ( 131.893493064355 , "Solido" , "Blu" , "USL" , 1 ) ,
Aggiungi linea di riferimento ( 118.153221027253 , "Solido" , "Blu" , "Bersaglio" , 1 )}
)
)
)
)
)
)
) ;
Inviato da Posta per Windows 10
Ri: Rilevamento di modifiche in un filtro dati localeCon
rs = xx << Make Filter State Handler( dosomethingwithselection );
invece di
xx << MakeRowStateHandler( dosomethingwithselection );
Funzionerà.
Tieni presente che è essenziale memorizzare il gestore dello stato del filtro restituito in un simbolo JSL: rs =
<STRIKE>rs =</STRIKE> xx << Make Filter State Handler( dosomethingwithselection );
(senza rs = ) non funzionerà: Gestore della modifica del filtro
Ri: Rilevamento di modifiche in un filtro dati localeNon rispondo direttamente alla tua domanda, Jim. Ma FWIW, non ho visto "MakeRowStateHandler" nell'elenco dei messaggi per l'oggetto filtro dati locale.
Ri: Rilevamento di modifiche in un filtro dati localeIan,
Il tuo esempio ha funzionato alla grande.Sono tornato per trovare documentazione su questo argomento, nell'indice degli script, e ho trovato solo il riferimento più oscuro che un "Gestore dello stato di Mark Row" funzionerà su un filtro di tabella dati.Quindi ho pensato che se lo avessi impostato in modo da poter puntare direttamente al filtro, piuttosto che alla casella di contorno del filtro, avrebbe dovuto funzionare ed essere un pezzo di codice ancora più diretto.Ma non ha funzionato.Hai qualche idea del perché non funziona?Quando eseguo lo script, sa che l'handle "xx" punta a un filtro dati.
Nomi predefiniti qui ( 1 ) ;
// Alcuni dati
dt = Nuova tabella ( "Frutta" ,
Aggiungi righe( 3 ) ,
Nuova colonna ( "Frutta" ,
Carattere ,
"Nominale" ,
Imposta valori ({ "Pera" , "Mela" , "Arancia" })
)
) ;
// Un report con un filtro dati locale
GB = dt << Costruttore di grafici (
Misurare( 528 , 448 ) ,
Mostra pannello di controllo( 0 ) ,
Mostra legenda( 0 ) ,
Variabili( X( : Frutta ) ) ,
Elementi( Barra( X , Leggenda( 3 ) ) )
) ;
xx = GB << Filtro dati locale ( Modalità , Aggiungi filtro(colonne( : Frutta ) ) ) ;
// Funzione di gestione dello stato della riga
fai qualcosa con la selezione = Funzione ( {X} ,
{Locale predefinito},
Bip () ;
Aspettare ( 0,1 ) ;
Bip () ;
) ;
// Ottieni un riferimento al rapporto
gbReport = GB << Rapporto;
// Scopri quali messaggi comprende la casella di visualizzazione del filtro dati (stampa nel registro)
Mostra proprietà ( gbReport[ Casella di contorno ( 1 )] ) ;
// Assegna il gestore dello stato della riga alla casella di visualizzazione del filtro dati locale
xx << MakeRowStateHandler (fare qualcosa con la selezione) ;
//rsh = gbReport[OutlineBox(1)] << MakeRowStateHandler(faiqualcosaconselezione);
Ri: Rilevamento di modifiche in un filtro dati localeForse potresti provare ad aggiungere il gestore dello stato della riga al filtro dati locale? Per esempio:
NomiDefaultToHere ( 1 ) ;
// Alcuni dati
dt = Nuova tabella ( "Frutta" ,
Aggiungi righe ( 3 ) ,
Nuova colonna ( "Frutta" ,
Carattere ,
"Nominale" ,
Imposta valori ( { "Pera" , "Mela" , "Arancia" } )
)
) ;
// Un report con un filtro dati locale
GB = dt << Costruttore di grafici (
Misurare ( 528 , 448 ) ,
Mostra Pannello di controllo ( 0 ) ,
Mostra legenda ( 0 ) ,
Variabili ( X ( : Frutta ) ) ,
Elementi ( Sbarra ( X , Leggenda ( 3 ) ) ) ,
Filtro dati locale ( Modalità , Aggiungi filtro ( colonne ( : Frutta ) ) )
) ;
// Funzione di gestione dello stato della riga
fai qualcosa con la selezione = Funzione ({ X } , { Locale predefinito } , Bip () ; Aspettare ( 0,1 ) ; Bip () ) ;
// Ottieni un riferimento al rapporto
gbReport = GB << Rapporto ;
// Scopri quali messaggi comprende la casella di visualizzazione del filtro dati (stampa nel registro)
MostraProprietà ( gbReport [ OutlineBox ( 1 )]) ;
// Assegna il gestore dello stato della riga alla casella di visualizzazione del filtro dati locale
rsh = gbReport [ OutlineBox ( 1 )] << MakeRowStateHandler ( fai qualcosa con la selezione ) ;
Ri: Rilevamento di modifiche in un filtro dati localeSperavo ci fosse un monitoraggio più diretto di un filtro locale.Forse il 14.0 avrà un monitor del genere . Grazie per il codice.
Ri: Rilevamento di modifiche in un filtro dati localeNon riesco a pensare ad alcun supporto integrato per il monitoraggio di un filtro dati locale tramite script.
Di seguito è riportato un hack che viene eseguito semplicemente in background per individuare le modifiche ai filtri apportate dall'utente.
Nomi predefiniti qui ( 1 ) ;
dt = Aprire ( "$SAMPLE_DATA\capacità semiconduttori.jmp" ) ;
F = Funzione ( { CCB } ,
// Cattura LCL e UCL dalla casella di riepilogo dei limiti nell'output del report
myLCL = ( Rapporto ( CCB )[ "Riepiloghi dei limiti NPN1" ][ Scatola da tavolo ( 1 )][ 2 ] << Ottenere )[ 1 ] ;
miaUCL = ( Rapporto ( CCB )[ "Riepiloghi dei limiti NPN1" ][ Scatola da tavolo ( 1 )][ 4 ] << Ottenere )[ 1 ] ;
// Riapplica alla carta di controllo le nuove impostazioni degli assi
Rapporto ( CCB )[ Scatola dell'Asse ( 3 )] << minimo ( myLCL ) ;
Rapporto ( CCB )[ Scatola dell'Asse ( 3 )] << Massimo ( miaUCL ) ;
) ;
ora = Nuova finestra ( "Esempio funzionante" ,
Casella Contesto filtro dati (
Casella di riepilogo H (
ldf = dt << Filtro dati ( Locale , Aggiungi filtro ( Colonne ( : LUOGO ) ) , Modalità ( Selezionare ( 1 ) , spettacolo ( 1 ) , includere ( 1 )) ) ,
piattaforma ( dt ,
CCB = Costruttore di carte di controllo (
Misurare ( 534 , 453 ) ,
Mostra Pannello di controllo ( 1 ) ,
Variabili ( Y ( : NPN1 ) ) ,
Grafico ( Posizione ( 1 ) , Limiti ) ,
Grafico ( Posizione ( 2 ) ) ,
Invia a rapporto (
Spedizione (
{} ,
"NPN1" ,
ScaleBox ,
{ minimo ( 96.6346153846154 ) , Massimo ( 131.634615384615 ) , Inc ( 5 ) , Zecche minori ( 0 ) ,
Aggiungi linea di riferimento ( 104.412948990151 , "Solido" , "Blu" , "LSL" , 1 ) ,
Aggiungi linea di riferimento ( 131.893493064355 , "Solido" , "Blu" , "USL" , 1 ) ,
Aggiungi linea di riferimento ( 118.153221027253 , "Solido" , "Blu" , "Bersaglio" , 1 )}
)
)
)
)
)
)
) ;
// Monitora il filtraggio dei dati locali sbirciando nella clausola Where sotto il grafico di controllo
// Individua innanzitutto la casella di testo della clausola Where
// (il numero varia ma sembra essere sempre l'ultimo)
Aspettare ( 0 ) ;
io = 1 ;
Mentre ( È scrivibile ( Tentativo ( genitore = ora [ Casella di testo ( io )] << genitore )) ,
Mentre ( parentType = Car ( genitore << nome della classe ) != "Riquadro di contorno" , genitore = genitore << genitore ) ;
io ++;
) ;
// Cerca modifiche con una frequenza adeguata
filtro = "nessuno" ;
Mentre ( È scrivibile ( ora ) , // Verrà eseguito fino alla chiusura di nw
Aspettare ( 0,1 ) ; // imposta qui la frequenza di scansione
Se ( ! Manca ( nuovofiltro = Tentativo ( ora [ Casella di testo ( io )] << gettext )) ,
Se ( filtro != nuovofiltro ,
filtro = ora [ Casella di testo ( io )] << gettext ;
F ( CCB ) ; // ottiene i limiti e imposta un asse
)
) ;
) ;