Code pour vérifier si aucune ligne n'est créée dans une table de données, fermez la table de donnéesJe 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 transforme en table pour traitement. Ensuite, vérifiez chacune des N lignes du tableau de données, si N lignes = 0, fermez le tableau de données. Enfin, ajoutez le tableau de données au 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, pas de sauvegarde));
Je pense qu'il pourrait y avoir une erreur dans le code. Le code global n'est peut-être pas bien écrit
Besoin de lignes directrices 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 );
Études de consommation et de marchéOrganisation du contenuMélange et nettoyage des donnéesPersonnalisation de masseRe : Code pour vérifier si aucune ligne n'est créée dans une table de données, fermez la table de donnéesça marche parfaitement. Merci Jim et Jarmo
Re : Code pour vérifier si aucune ligne n'est créée dans une table de données, fermez la table de donnéesVous essayez de transmettre des messages à votre objet mDT même lorsque la table a été fermée.Vérifiez si le JSL ci-dessous fonctionne pour vous
saveFolder = "$TEMP/";
listDT = {};
listtab = {};
mDT = {};
col = Column( dt1Sub, ":PART" );
colLevs = Associative Array( col ) << Get Keys;
hb = V List Box();
For( i = 1, i <= N Items( 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 );Re : Code pour vérifier si aucune ligne n'est créée dans une table de données, fermez la table de donnéesIl se peut que vous poursuiviez l'exécution de la boucle après la fermeture de la table de données. Vous pouvez essayer de déplacer les lignes de 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();
);