Code zum Überprüfen, ob in einer Datentabelle keine Zeile erstellt wurde: Schließen Sie die DatentabelleIch erstelle eine Teilmenge einer Listendatentabelle aus einer Hauptdatentabelle. Dann manipuliere ich die Daten mit Tabulate() und stelle sie zur Verarbeitung in die Tabelle ein. Überprüfen Sie dann jede der N Zeilen der Datentabelle. Wenn N Zeilen = 0, schließen Sie die Datentabelle. Hängen Sie abschließend die Datentabelle in den Bericht ein. Unten ist mein Skript.
Das Problem besteht darin, dass es nicht mehr funktioniert, nachdem ich die folgenden Codes hinzugefügt habe, um die N Zeilen zu überprüfen. Es wird kein Fehler angezeigt.
If(N Rows(mDT)==0, Close(mDT, no save));
Ich glaube, es könnte ein Fehler im Code vorliegen. Der gesamte Code ist möglicherweise nicht gut geschrieben
Brauche hier eine Anleitung und Hilfe.
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 );
Verbraucher- und MarktforschungInhaltsorganisationDatenmischung und -bereinigungMassenanpassungBetreff: Code zum Überprüfen, ob in einer Datentabelle keine Zeile erstellt wurde, schließen Sie die Datentabellees funktioniert perfekt. Danke Jim und Jarmo
Betreff: Code zum Überprüfen, ob in einer Datentabelle keine Zeile erstellt wurde, schließen Sie die DatentabelleSie versuchen, Nachrichten an Ihr mDT-Objekt zu übergeben, auch wenn die Tabelle geschlossen wurde.Sehen Sie, ob die JSL unten für Sie funktioniert
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 );Betreff: Code zum Überprüfen, ob in einer Datentabelle keine Zeile erstellt wurde, schließen Sie die DatentabelleEs kann sein, dass Sie die Schleifenausführung fortsetzen, nachdem Sie die Datentabelle geschlossen haben. Sie könnten versuchen, die Zeilen in der for-Schleife nach der if-Anweisung in die else-Anweisung zu verschieben:
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));
);
oder useContinue() nach dem Schließen von mDT:
If(N Rows(mDT) == 0,
Close(mDT, no save)
Continue();
);