J'ai un script qui importe des données sur la résistance du joint et utilise ensuite ces données pour générer des cartes de contrôle. L'ensemble de données contient près d'un an de données, mais les cartes de contrôle n'ont besoin d'afficher que les données des 3 derniers mois.Il y a une liste de numéros de scelleurs actifs dans le script et je l'ai configurée pour parcourir la liste des scelleurs actifs et s'il existe des données pour ce scelleur au cours des trois derniers mois, créez un sous-ensemble, puis la carte de contrôle. Cela fonctionnait, mais lorsque j'ai récemment ajouté deux nouveaux numéros de scelleurs (11043 et 12143) à la liste, le script ne génère pas les cartes de contrôle pour ces deux scelleurs. J'ai recherché manuellement les données et je sais qu'il existe des données pour chacun des deux nouveaux chasseurs de phoque au cours des trois derniers mois. Je n'arrive pas à comprendre ce qui est différent pour ces deux scelleurs qui causent un dysfonctionnement du script.J'ai joint des données inventées dans un fichier Excel au format que nous obtenons des tests de résistance du joint. Voici ce que j'ai dans le 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 et moi l'avons configuré pour parcourir la liste des chasseurs actifs et s'il existe des données pour ce chasseur au cours des trois derniers mois, créez un sous-ensemble, puis la carte de contrôle. Cela fonctionnait, mais lorsque j'ai récemment ajouté deux nouveaux numéros de scelleurs à la liste, le script ne génère pas les cartes de contrôle pour ces deux scelleurs. J'ai recherché manuellement les données et je sais qu'il existe des données pour chacun des deux nouveaux chasseurs de phoque au cours des trois derniers mois. Je n'arrive pas à comprendre ce qui est différent pour ces deux scelleurs qui causent un dysfonctionnement du script.
Je soupçonnerais que ce code tombe dans le cas continu:
DS << Select Where( :Sealer Number == SL[i] & :Date >= Short Date( Today() - 90 * 86400 ) );
If( N Row( DS << get selected rows ) == 0,
Continue()
);
Comme Mark le suggère, définissez un point d'arrêt sur le continuez, ou ajoutez simplement une instruction :
Show( i, SL[i], :Date );
Regardez dans le journal pour la sortie. Je vais deviner que :Date va être faux, peut-être parce qu'il n'y a pas de ligne actuelle dans la table de données.