檢查資料表中是否沒有建立行的程式碼,關閉資料表我正在從主資料表建立列表資料表子集。 然後,我透過 Tabulate() 操作資料並將其放入表格中進行處理。 然後,檢查資料表中的每N行,如果N行=0,則關閉資料表。 最後,將數據表附加到報告中。 下面是我的腳本。
問題是在我添加下面的程式碼後,檢查 N 行,它不再起作用。 沒有錯誤出現。
If(N 行(mDT)==0, 關閉(mDT, 不儲存));
我相信程式碼上可能存在一些錯誤。 整體程式碼可能寫得不好
在這裡需要指導和幫助。
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 );
消費者與市場研究內容組織資料混合與清理大規模客製化回覆:檢查資料表中是否未建立行的程式碼,關閉資料表它工作完美。 謝謝吉姆和賈莫
回覆:檢查資料表中是否未建立行的程式碼,關閉資料表即使表已關閉,您仍嘗試將訊息傳遞到 mDT 物件。看看下面的 JSL 是否適合您
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 );回覆:檢查資料表中是否未建立行的程式碼,關閉資料表可能是您在關閉資料表後繼續循環執行。 您可以嘗試將 if 語句後的 for 迴圈中的行移至 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));
);
或關閉 mDT 後使用Continue():
If(N Rows(mDT) == 0,
Close(mDT, no save)
Continue();
);