Tengo un script que importa datos de fuerza de sellado y luego usa esos datos para generar gráficos de control. El conjunto de datos tiene casi un año de datos, pero los gráficos de control solo necesitan mostrar datos de los últimos 3 meses.Hay una lista de números de selladores activos en el script y lo configuré para revisar la lista de selladores activos y si hay datos para ese sellador en los últimos tres meses, cree un subconjunto y luego el gráfico de control. Estaba funcionando, pero cuando agregué dos nuevos números de selladores (11043 y 12143) a la lista recientemente, la secuencia de comandos no generará los gráficos de control para esos dos selladores. He buscado manualmente los datos y sé que hay datos para cada uno de los dos nuevos selladores en los últimos tres meses. No puedo entender qué es diferente para estos dos selladores que están causando que el guión no funcione correctamente.Adjunté algunos datos inventados en un archivo de Excel que está en el formato que obtenemos de las pruebas de resistencia del sello. Esto es lo que tengo en el script:
//Import file and create data table
DS = Open("Source File Path Here"); //need to check where the file will be stored and what it will be called
DS << Set Name ("Sealer Data - Maximum Load (lbf/in)");
//Sort Data
DS <
//Modify date to display only the date and not the date and time
DS << New Column("Date", Numeric, Continuous, Formula(Short Date(Num(Munger(Char(:End date), 1,10)))));
//Create a subset data table and control chart for each sealer
SL = {07056, 08139, 09066, 10083, 10088, 10532, 11043, 12035, 12036, 12093, 12119, 12143, 12144, 12145, 14122, 14123}; //list modified for 07Feb17
For(i=N Items(SL), i>0, i--,
DS << Select Where (:Sealer Number == SL[i] & :Date >= Short Date(Today() - 90 * 86400));
If( N Row( DS << get selected rows ) == 0, Continue() );
DS << Subset ((Selected Rows), Output Table Name("Sealer_"||char(SL[i])));
IF(SL[i]==12119,
Control Chart(
Sample Label( :Date ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Maximum Load, Individual Measurement),
SendToReport(
Dispatch( {}, "Control Chart", OutlineBox, {Set Title( "Sealer_"||char(SL[i]) )} ),
Dispatch(
{"Individual Measurement of Maximum Load"},
"2",
ScaleBox,
{Format( "Fixed Dec", 12, 1 ), Min( -0.5), Max( 10 ),
Inc(5), Minor Ticks( 1 ),
Add Ref Line( 0.46, Dashed, "Purple", "0.46" ),
Add Ref Line( 0.7, Dotted, "Blue", "0.70" ),
Rotated Labels( "Horizontal" )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"1",
ScaleBox,
{Show Minor Ticks( 0 ), Rotated Labels( "Vertical" )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"",
AxisBox,
{Add Axis Label( "Maximum Load (lbf/in)" )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"IR Chart of IM",
FrameBox,
{Frame Size( 912, 318 ), Line Width Scale( 1.5 )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"",
AxisBox( 2 ),
{Add Axis Label( "Date" )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"IR Chart of IM",
FrameBox( 2 ),
{Frame Size( 70, 318 )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"1",
ScaleBox,
{Inc( 1 ), Minor Ticks( 0 )}
)
),
),
Control Chart(
Sample Label( :Date ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Maximum Load, Individual Measurement),
SendToReport(
Dispatch( {}, "Control Chart", OutlineBox, {Set Title( "Sealer_"||char(SL[i]) )} ),
Dispatch(
{"Individual Measurement of Maximum Load"},
"2",
ScaleBox,
{Format( "Fixed Dec", 12, 1 ), Min( -0.5 ), Max( 5 ),
Inc( 5 ), Minor Ticks( 1 ), Add Ref Line( 0.46, "Dashed", "Purple", "0.46", 1 ),
Add Ref Line( 0.7, "Dotted", "Blue", "0.70", 1 )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"1",
ScaleBox,
{Inc( 1 ), Minor Ticks( 0 )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"",
AxisBox,
{Add Axis Label( "Maximum Load (lbf/in)" )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"IR Chart of IM",
FrameBox,
{Frame Size( 912, 318 ), Line Width Scale( 1.5 )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"",
AxisBox( 2 ),
{Add Axis Label( "Date" )}
),
Dispatch(
{"Individual Measurement of Maximum Load"},
"IR Chart of IM",
FrameBox( 2 ),
{Frame Size( 70, 318 )}
)
)
);
);
);
t y lo configuré para revisar la lista de selladores activos y, si hay datos para ese sellador en los últimos tres meses, cree un subconjunto y luego el gráfico de control. Estaba funcionando, pero cuando agregué dos nuevos números de selladores a la lista recientemente, la secuencia de comandos no generará los gráficos de control para esos dos selladores. He buscado manualmente los datos y sé que hay datos para cada uno de los dos nuevos selladores en los últimos tres meses. No puedo entender qué es diferente para estos dos selladores que están causando que el guión no funcione correctamente.
Sospecho que este código está cayendo en el caso de continuar:
DS << Select Where( :Sealer Number == SL[i] & :Date >= Short Date( Today() - 90 * 86400 ) );
If( N Row( DS << get selected rows ) == 0,
Continue()
);
Como sugiere Mark, establezca un punto de interrupción en la continuación, o tal vez simplemente agregue una declaración:
Show( i, SL[i], :Date );
Busque en el registro la salida. Supondré que :Date será incorrecto, quizás porque no hay una fila actual en la tabla de datos.