각 행에 대해 삽입For Each Row 반복문 안에 있는 INSERT INTO 문 때문에 어려움을 겪고 있습니다. "Type" 열에서 카테고리를 찾고, 그 카테고리에 해당하는 "COLUMN_NAME" 열의 값을 선택하여 각 카테고리별 목록을 만들고 싶습니다. INSERT INTO 문 부분에서 문제가 발생하는 것 같습니다.
// Get the current data table
dt = Current Data Table();
colName = "Type";
// Get the column reference
Types = Column( colName );
// Extract all values from the column
allValues = Types << Get Values;
// Get unique values (removes duplicates)
Cats = Associative Array( allValues ) << Get Keys;
// Sort the unique values (optional)
Cats = Sort List( Cats );
// Display results in the log
Show( Cats );
delCats = {"", "-"};
For( i = 1, i <= N Items( delCats ), i++,
Remove From( Cats, As List( Loc( Cats, delCats[i] ) ) )
);
show(Cats);
For For( i = 1, i <= N Items( Cats ), i++,
Spud = Char(Cats(i));
Spud = {};
For Each Row(
// Access column values directly by name
If(:Type = Char(Cats[i]), Insert Into(Spud, :COLUMN_NAME) ;
);
));
성명.
자동화 및 스크립팅제목: 각 행에 대해 삽입(제가 당신의 의도를 제대로 이해했다면) 이 경우에는 For Each Row를 사용할 필요가 없습니다. 그냥 For Each 구문에 << Get Rows Where 조건을 추가하고 데이터 테이블의 인덱싱을 이용하여 값을 리스트에 추가하면 됩니다.
제목: 각 행에 대해 삽입제공된 코드는 실행되지 않을 뿐 아니라, 띄어쓰기가 제대로 되어 있지 않아 읽기 어렵습니다. JSL에서 이상한 기법(연관 배열의 키가 이미 정렬되어 있음에도 불구하고 순서를 바꾸는 등)을 사용하는 것으로 보아 AI가 생성한 코드인 것 같습니다.
제공된 코드(및 질문)만으로는 정확히 무엇을 하려고 하는지 잘 모르겠습니다. 하지만 루프를 돌 때마다 Spud 리스트를 교체하는 부분이 문제의 원인일 가능성이 있습니다.
제목: 각 행에 대해 삽입연속적인 과제
Spud = Char(Cats(i));
Spud = {};
첫 번째 항목을 두 번째 항목으로 덮어쓰고 있습니다. 또한 이 항목들은 외부 루프 안에 있기 때문에 @jthi 님 이 목록이 확장되는 것이 아니라 새로 생성되고 있다고 제안한 것입니다.
추가하기
show( row(), spud, ...etc... );
로그에 중간 결과를 얻을 수 있는 여러 위치를 명시하는 것도 도움이 될 수 있습니다. 또는
write( "\!n x=" || char(x) || " y=" || char(y) );
형식을 지정하고 싶다면요. 또는
write( Eval Insert("\!n x=^x^ y=^y^) );
읽기 더 쉬울 수도 있습니다.
JSL 편집기에는 루프 들여쓰기가 시각적으로 어긋났을 때 도움이 되는 서식 재지정 명령이 있습니다.