Detección de cambios en un Filtro de Datos Local<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
A continuación se muestra una secuencia de comandos que utiliza un filtro de datos que, cuando se cambia, activa el controlador de estado de fila y actualiza el gráfico.Realmente quiero usar un filtro local, pero no he podido descubrir cómo detectar el cambio en el filtro local.¿Cómo se detecta un cambio en el filtro de datos local?
Nombres predeterminados aquí ( 1 ) ;
dt = Abierto ( "$SAMPLE_DATA\capacidad de semiconductores.jmp" ) ;
F = Función ( { a } ,
// Capture el LCL y UCL del cuadro de esquema de resúmenes de límites en la salida del informe
miLCL = ( Informe ( ccb )[ "Resúmenes de límites NPN1" ][ Caja de mesa ( 1 )][ 2 ] << conseguir )[ 1 ] ;
miUCL = ( Informe ( ccb )[ "Resúmenes de límites NPN1" ][ Caja de mesa ( 1 )][ 4 ] << conseguir )[ 1 ] ;
// Aplicar nuevamente al gráfico de control la nueva configuración del eje
Informe ( ccb )[ Caja de eje ( 3 )] << mín. ( miLCL ) ;
Informe ( ccb )[ Caja de eje ( 3 )] << máx. ( miUCL ) ;
) ;
rs = dt << hacer controlador de estado de fila ( F ) ;
Nueva ventana ( "Ejemplo práctico" ,
Cuadro contextual de filtro de datos (
Cuadro de lista H (
dt << Filtro de datos ( Añadir filtro ( columnas ( : SITIO ) ) , Modo ( seleccionar ( 1 ) , espectáculo ( 1 ) , incluir ( 1 )) ) ,
Plataforma ( dt ,
ccb = Generador de gráficos de control (
Tamaño ( 534 , 453 ) ,
Mostrar panel de control ( 0 ) ,
variables ( Y ( : NPN1 ) ) ,
Cuadro ( Posición ( 1 ) , Límites ) ,
Cuadro ( Posición ( 2 ) ) ,
Enviar a informe (
Despacho (
{} ,
"NPN1" ,
Caja de escala ,
{ mín. ( 96.6346153846154 ) , máx. ( 131.634615384615 ) , Cª ( 5 ) , Garrapatas menores ( 0 ) ,
Agregar línea de referencia ( 104.412948990151 , "Sólido" , "Azul" , "LSL" , 1 ) ,
Agregar línea de referencia ( 131.893493064355 , "Sólido" , "Azul" , "USL" , 1 ) ,
Agregar línea de referencia ( 118.153221027253 , "Sólido" , "Azul" , "Objetivo" , 1 )}
)
)
)
)
)
)
) ;
Enviado desde Correo para ventanas 10
Re: Detección de cambios en un Filtro de Datos LocalCon
rs = xx << Make Filter State Handler( dosomethingwithselection );
en lugar de
xx << MakeRowStateHandler( dosomethingwithselection );
funcionará.
Tenga en cuenta que es esencial almacenar el controlador de estado del filtro devuelto en un símbolo JSL: rs =
<STRIKE>rs =</STRIKE> xx << Make Filter State Handler( dosomethingwithselection );
(sin r = ) no trabajará: Controlador de cambio de filtro
Re: Detección de cambios en un Filtro de Datos LocalNo respondo tu pregunta directamente, Jim. Pero FWIW, no vi 'MakeRowStateHandler' en la lista de mensajes para el objeto de filtro de datos local.
Re: Detección de cambios en un Filtro de Datos Localian,
Tu ejemplo funcionó muy bien.Volví a buscar documentación sobre esto, en el índice de secuencias de comandos, y solo encontré la referencia más oscura de que un "Manejador de estado de fila de marcas" funcionará en un filtro de tabla de datos.Así que pensé que si lo configuraba para poder apuntar directamente al filtro, en lugar del cuadro de contorno del filtro, debería funcionar y ser un fragmento de código aún más directo.Pero eso no funcionó.¿Tiene alguna idea de por qué eso no funciona?Cuando ejecuto el script, sabe que el identificador "xx" apunta a un filtro de datos.
Nombres predeterminados aquí ( 1 ) ;
// Algunos datos
dt = Nueva mesa ( "Frutas" ,
Agregar filas ( 3 ) ,
Nueva columna ( "Fruta" ,
Personaje ,
"Nominal" ,
Establecer valores ({ "Pera" , "Manzana" , "Naranja" } )
)
) ;
// Un informe con un filtro de datos local
gb = dt << Generador de gráficos (
Tamaño( 528 , 448 ) ,
Mostrar panel de control( 0 ) ,
Mostrar leyenda( 0 ) ,
Variables( X( : Fruta ) ) ,
Elementos( Barra( X , Leyenda( 3 ) ) )
) ;
xx = gb << Filtro de datos locales ( Modo , Agregar filtro (columnas ( : Fruta ) ) ) ;
// función de controlador de estado de fila
hacer algo con selección = Función ( {X} ,
{Local predeterminado},
Bip () ;
Esperar ( 0.1 ) ;
Bip () ;
) ;
// Obtener una referencia al informe
GBReporte = gb << Informe;
// Ver qué mensajes entiende el cuadro de visualización del filtro de datos (imprime en el registro)
Mostrar propiedades ( gbInforme[ Cuadro de esquema ( 1 )] ) ;
// Asigne el controlador de estado de fila al cuadro de visualización del filtro de datos local
xx << MakeRowStateHandler (hacer algo con selección) ;
//rsh = gbReport[OutlineBox(1)] << MakeRowStateHandler(dosomethingwithselection);
Re: Detección de cambios en un Filtro de Datos Local¿Quizás podría intentar agregar el controlador de estado de fila al filtro de datos local? Por ejemplo:
NombresDefaultToHere ( 1 ) ;
// Algunos datos
dt = Nueva mesa ( "Frutas" ,
Agregar filas ( 3 ) ,
Nueva columna ( "Fruta" ,
Personaje ,
"Nominal" ,
Establecer valores ( { "Pera" , "Manzana" , "Naranja" } )
)
) ;
// Un informe con un filtro de datos local
gb = dt << Generador de gráficos (
Tamaño ( 528 , 448 ) ,
Mostrar panel de control ( 0 ) ,
Mostrar leyenda ( 0 ) ,
variables ( X ( : Fruta ) ) ,
Elementos ( Bar ( X , Leyenda ( 3 ) ) ) ,
Filtro de datos locales ( Modo , Añadir filtro ( columnas ( : Fruta ) ) )
) ;
// función de controlador de estado de fila
hacer algo con selección = Función ({ X } , { Local predeterminado } , Bip () ; Esperar ( 0.1 ) ; Bip () ) ;
// Obtener una referencia al informe
GBReporte = gb << Informe ;
// Ver qué mensajes entiende el cuadro de visualización del filtro de datos (imprime en el registro)
MostrarPropiedades ( GBReporte [ Cuadro de esquema ( 1 )]) ;
// Asigne el controlador de estado de fila al cuadro de visualización del filtro de datos local
rsh = GBReporte [ Cuadro de esquema ( 1 )] << MakeRowStateHandler ( hacer algo con selección ) ;
Re: Detección de cambios en un Filtro de Datos LocalEsperaba que hubiera un monitor más directo de un filtro local.Quizás 14.0 tenga ese monitor . Gracias por el código.
Re: Detección de cambios en un Filtro de Datos LocalNo se me ocurre ningún soporte integrado para monitorear un filtro de datos local mediante script.
A continuación se muestra un truco que simplemente se ejecuta en segundo plano para encontrar cambios de filtrado realizados por el usuario.
Nombres predeterminados aquí ( 1 ) ;
dt = Abierto ( "$SAMPLE_DATA\capacidad de semiconductores.jmp" ) ;
F = Función ( { ccb } ,
// Capture el LCL y UCL del cuadro de esquema de resúmenes de límites en la salida del informe
miLCL = ( Informe ( ccb )[ "Resúmenes de límites NPN1" ][ Caja de mesa ( 1 )][ 2 ] << conseguir )[ 1 ] ;
miUCL = ( Informe ( ccb )[ "Resúmenes de límites NPN1" ][ Caja de mesa ( 1 )][ 4 ] << conseguir )[ 1 ] ;
// Aplicar nuevamente al gráfico de control la nueva configuración del eje
Informe ( ccb )[ Caja de eje ( 3 )] << mín. ( miLCL ) ;
Informe ( ccb )[ Caja de eje ( 3 )] << máx. ( miUCL ) ;
) ;
noroeste = Nueva ventana ( "Ejemplo práctico" ,
Cuadro contextual de filtro de datos (
Cuadro de lista H (
ldf = dt << Filtro de datos ( local , Añadir filtro ( columnas ( : SITIO ) ) , Modo ( seleccionar ( 1 ) , espectáculo ( 1 ) , incluir ( 1 )) ) ,
Plataforma ( dt ,
ccb = Generador de gráficos de control (
Tamaño ( 534 , 453 ) ,
Mostrar panel de control ( 1 ) ,
variables ( Y ( : NPN1 ) ) ,
Cuadro ( Posición ( 1 ) , Límites ) ,
Cuadro ( Posición ( 2 ) ) ,
Enviar a informe (
Despacho (
{} ,
"NPN1" ,
Caja de escala ,
{ mín. ( 96.6346153846154 ) , máx. ( 131.634615384615 ) , Cª ( 5 ) , Garrapatas menores ( 0 ) ,
Agregar línea de referencia ( 104.412948990151 , "Sólido" , "Azul" , "LSL" , 1 ) ,
Agregar línea de referencia ( 131.893493064355 , "Sólido" , "Azul" , "USL" , 1 ) ,
Agregar línea de referencia ( 118.153221027253 , "Sólido" , "Azul" , "Objetivo" , 1 )}
)
)
)
)
)
)
) ;
// Supervise el filtrado de datos locales echando un vistazo a la cláusula Where debajo del gráfico de control
// Primero localiza el cuadro de texto de la cláusula Where
// (el número varía pero parece ser siempre el último)
Esperar ( 0 ) ;
i = 1 ;
Mientras ( Es programable ( Intentar ( padre = noroeste [ Caja de texto ( i )] << padre )) ,
Mientras ( tipo de padre = Carbonizarse ( padre << nombre de la clase ) != "Cuadro de esquema" , padre = padre << padre ) ;
i ++;
) ;
// Busca cambios con una frecuencia adecuada
filtrar = "ninguno" ;
Mientras ( Es programable ( noroeste ) , // Se ejecutará hasta que se cierre nw
Esperar ( 0.1 ) ; // establece la frecuencia de escaneo aquí
Si ( ! Está perdido ( nuevofiltro = Intentar ( noroeste [ Caja de texto ( i )] << obtener texto )) ,
Si ( filtrar != nuevofiltro ,
filtrar = noroeste [ Caja de texto ( i )] << obtener texto ;
F ( ccb ) ; // obtener límites y establecer un eje
)
) ;
) ;