Identificaría las filas asociadas con las alarmas activadas. El controlador que se llama cuando se activan las alarmas recibe la información sobre los puntos, en particular qc_sample (y qc_firstRow qc_lastRow). Esto debería ser perfecto si solo hay un gráfico. La muestra identifica la fila de la tabla si tenemos medidas individuales. Desafortunadamente, tengo una columna POR que se divide en muchos gráficos. En este caso, qc_sample se refiere a la muestra de cada gráfico y esto dificulta recuperar las filas correspondientes en la tabla. ¿Existe una forma sencilla de conseguirlos?
Sí, parece que el script de alarma parece ser un instrumento contundente en el sentido de que no hay una manera obvia (para mí...) de que los valores de 'qc_sample' puedan relacionarse con los niveles de la variable 'By', y de ahí a la fila apropiada en la tabla de datos.
Pero, dependiendo de qué más esté sucediendo en su secuencia de comandos, es posible que pueda utilizar la 'Detección de procesos' para obtener lo que necesita. El siguiente script debería ayudarle a comenzar: ejecútelo e inspeccione el registro y las dos tablas 'detalladas' que crea.
NamesDefaultToHere(1);
// Make some data
dt = NewTable("Alarms",
NewColumn("By", Numeric, Nominal, Formula(RandomInteger(1,2))),
NewColumn("Data", Numeric, Continuous, Formula(RandomNormal(0,1)))
);
dt << addRows(1000);
// Use process screening invisibly to get the details of all alarms (one table for each level of the 'By' variable)
ps = dt << Process Screening( Y(Column(dt, "Data")), By(Column(dt, "By")), Invisible );
dtList = ps << saveDetailsTable;
Report(ps[1]) << closeWindow;
// Control chart with alarm script
cc = dt << Control Chart(
Chart Col( :Data, Individual Measurement, Moving Range ),
By( :By ),
Alarm Script(
Write(
"Out of Control for test ",
qc_test,
" in column ",
qc_col,
" in sample ",
qc_sample,
"\!N"
)
)
);
// Turn on Test 1
cc << Test 1(1);