기본 데이터 테이블에서 목록 데이터 테이블 하위 집합을 만들고 있습니다. 그런 다음 Tabulate()를 통해 데이터를 조작하고 처리할 테이블로 만듭니다. 그런 다음 각 데이터 테이블 N Rows를 확인하고 N Rows = 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 );데이터 테이블을 닫은 후 루프 실행을 계속할 수 있습니다. 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를 닫은 후 계속() 사용:
If(N Rows(mDT) == 0,
Close(mDT, no save)
Continue();
);