Je crée un sous-ensemble de table de données de liste à partir d'une table de données principale. Ensuite, je manipule les données via Tabulate () et les crée dans la table pour le traitement. Ensuite, vérifiez chacune des N Rows de la table de données, si N Rows = 0, fermez la table de données. Enfin, ajoutez le tableau de données dans le rapport. Ci-dessous mon script.
Le problème est qu'après avoir ajouté les codes ci-dessous, pour vérifier les N lignes, cela ne fonctionne plus. Aucune erreur ne s'affiche.
If(N Rows(mDT)==0, Close(mDT, no save));
Je pense qu'il peut y avoir une erreur dans le code écrit. Besoin de conseils et d'aide ici.
saveFolder = "$TEMP/";
listDT = {};
listtab = {};
mDT = {};
col = Column(dt1Sub, ":PART");
colLevs = Associative Array(col) << Get Keys;
hb = V List Box( );
For (i=1, i<=NItems(colLevs), i++,
r2get = dt1 << Get Rows Where(:PART == colLevs[i]);
listDT[i] = dt1 << Subset(Rows(r2get));
listDT[i] << Set Name(Char(colLevs[i]));
listDT[i] << Save( saveFolder || Word( 1, listDT[i] << get name, "-" )||".csv");
listtab = listDT[i] << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Grouping Columns( :ORDER ) ),
Column Table( Statistics( Sum ), Analysis Columns( :Qty ) ),
Row Table(
Grouping Columns(
::PART,
::PART DESC,
:LOW PART #,
:LOW PART DESC,
:FAILURE MODE
)
)
)
);
mDT= listtab << Make Into Data Table;
Close(listDT[i], no save);
mDT << New Column ("Criteria", Character, "Nominal",
Formula(
If(As Column(6)>= 3, "Failure")
)
);
mDT:Criteria << Delete Formula;
mDT << Sort(By(Column(6)),Order(Descending), Replace Table);
mDT << Select Where (:As Column(6) == 0);
mDT << Delete Rows;
If(N Rows(mDT)==0, Close(mDT, no save));
mDT << Set Window Size (2400, 800);
mDT << Get As Report;
hb << Append( ( mDT << Get As Report ) );
);
New Window( "Report", hb );Il se peut que vous continuiez l'exécution de la boucle après avoir fermé la table de données. Vous pouvez essayer de déplacer les lignes dans la boucle for après l'instruction if vers l'instruction else :
If(N Rows(mDT) == 0,
Close(mDT, no save)
,//else
mDT << Set Window Size(2400, 800);
mDT << Get As Report;
hb << Append((mDT << Get As Report));
);
ou useContinue() après la fermeture de mDT :
If(N Rows(mDT) == 0,
Close(mDT, no save)
Continue();
);