Ich habe ein Skript, das Daten zur Siegelfestigkeit importiert und diese Daten dann verwendet, um Kontrolldiagramme zu erstellen. Der Datensatz umfasst Daten von fast einem Jahr, in den Kontrolldiagrammen müssen jedoch nur Daten der letzten drei Monate angezeigt werden.Das Skript enthält eine Liste mit den Nummern der aktiven Versiegeler und ich habe es so eingerichtet, dass es die Liste der aktiven Versiegeler durchgeht. Wenn in den letzten drei Monaten Daten für diesen Versiegeler vorliegen, erstelle ich eine Teilmenge und dann das Kontrolldiagramm. Es hat funktioniert, aber als ich kürzlich zwei neue Versiegelungsnummern (11043 und 12143) zur Liste hinzugefügt habe, generiert das Skript keine Kontrolldiagramme für diese beiden Versiegelungsgeräte. Ich habe die Daten manuell durchsucht und weiß, dass es in den letzten drei Monaten Daten für jeden der beiden neuen Versiegeler gibt. Ich kann nicht herausfinden, was bei diesen beiden Versiegelungen anders ist und zu einer Fehlfunktion des Skripts führt.Ich habe einige erfundene Daten in einer Excel-Datei angehängt, die in dem Format vorliegt, das wir aus der Siegelfestigkeitsprüfung erhalten. Folgendes habe ich im Skript:
//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 und ich hatten es so eingerichtet, dass es die Liste der aktiven Versiegler durchgeht und, wenn es Daten für diesen Versiegeler in den letzten drei Monaten gibt, eine Teilmenge und dann das Kontrolldiagramm erstellt. Es hat funktioniert, aber als ich kürzlich zwei neue Versiegelungsnummern zur Liste hinzugefügt habe, generiert das Skript keine Kontrolldiagramme für diese beiden Versiegelungsgeräte. Ich habe die Daten manuell durchsucht und weiß, dass es in den letzten drei Monaten Daten für jeden der beiden neuen Versiegeler gibt. Ich kann nicht herausfinden, was bei diesen beiden Versiegelungen anders ist und zu einer Fehlfunktion des Skripts führt.
Danke für die Hilfe! Einmal habe ich mich verändert
:Datum >= Kurzes Date ( Heute () - 90 * 86400 Zu
Num (:Datum) >= Heute () - 90 * 86400
Das Skript wurde korrekt ausgeführt. Ich denke, es lag daran, dass die Datumsspalte in eine Zeichenspalte geändert wurde und nicht in eine numerische Spalte, die sie sein sollte.
Ich würde vermuten, dass dieser Code in den Continue-Fall fällt:
DS << Select Where( :Sealer Number == SL[i] & :Date >= Short Date( Today() - 90 * 86400 ) );
If( N Row( DS << get selected rows ) == 0,
Continue()
);
Setzen Sie, wie Mark vorschlägt, einen Haltepunkt für die Fortsetzung oder fügen Sie einfach eine Anweisung hinzu:
Show( i, SL[i], :Date );
Suchen Sie im Protokoll nach der Ausgabe. Ich gehe davon aus, dass :Date falsch sein wird, vielleicht weil es keine aktuelle Zeile in der Datentabelle gibt.