안녕, 모두
이제는 데이터 테이블 (dt2라는 이름)을 기반으로 탭을 만들어야합니다. 탭의 이름은 dt2를 기반으로합니다. 즉, dt2에 10 개의 제품 이름이 있으면 인터페이스에 dt2의 제품 이름을 기반으로하는 10 개의 탭이 있어야합니다.
내 요구 사항 중 하나는 코딩을 하드 코드 할 수 없다는 것입니다. 왜냐하면 미래에 dt2에서 제품 이름을 추가해야 할 필요가 있기 때문에 탭이 dt2에서 제품 이름의 수와 동일한 값을 갖게됩니다.
그렇다면 dt2에서 데이터를 가져와 탭으로 만드는 방법은 무엇입니까?
실제로 나는 내가 완료해야하는 작업을위한 코드를 작성하는 방법을 모르지만 여러 번 시도했지만 오류가 계속 발생합니다.
감사.
dt2

dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
//Create Tabs based on the F D
VariabilityWindow = New Window("Variability Chart",tb = Tab Box() );
For(i =1, i <=nTabs(dt2 << get row names()), i++,
tb << insert(
dt2: F D[i] || Char(i),
V list Box(
Button Box("Variability Chart #" || Char(i)),
)
)
);JSL의 가장 기본적인 부분에 여전히 어려움을 겪고있는 것은 분명합니다. 표시 할 코드를 기반으로 한 몇 가지 포인터입니다.
1. 코드를 작성하지 마십시오. 작동하지 않으면 혼란 스럽습니다. 코드가 작동하는 것을 추측 할 때, 당신은 왜, 그리고 당신은 아무것도 알지 못합니다.
2. 로그를 사용하십시오. 나열한 많은 토론에서 로그 결과를 보지 못했습니다. 이 메시지는 JSL에 무엇이 잘못되었는지에 대한 훌륭한 세부 사항과 통찰력을 제공합니다.
삼. 용도 도움말 ==> 스크립트 색인. 항목의 작동 방식에 대한 올바른 구문과 예를 제공합니다. Scripting Index는 JSL에 관한 가장 완벽한 문서입니다.
코드를 비판하게하겠습니다.
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
요약 플랫폼에 대한 설명은 다음에서 찾을 수 있습니다.
도움말 == 스크립팅 인덱스 ==> 데이터 테이블 ==> 요약

여기에 필요한 것은 거의 itdentical 예입니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Summary( Group( :Age ), Mean( :Height ) );
그러나 누락 된 것으로 보이는 것은 요약 플랫폼에서 생성되는 요약 테이블에 대한 포인터를 작성하는 방법입니다. 그러나 데이터 테이블을 참조하는 방법을 이해하지 못하는 것 같습니다. 이 예에서 변수 "dt"는 열린 데이터 테이블을 가리 킵니다. 보시다시피, 요약 플랫폼이이를 참조 할 때 사용됩니다. 그러나 데이터 테이블 () 함수를 사용하여 데이터 테이블의 실제 이름을 가리킬 수도 있습니다. 데이터 테이블 ( "데이터 테이블 .............")을 사용하여 수행하려고하는 것으로 생각되는 종류입니다. 데이터 테이블의 이름을 아는 경우 둘 중 하나가 작동합니다. 그러나 제공된 코드에 표시 할 때 요약 플랫폼에서 만들 데이터 테이블을 가리키는 변수를 지정해야 다음 단계 (예 : dt
에서 사용할 수 있습니다.
다음 코드 섹션은 구문을 추측하고있는 것으로 보입니다.
//Create Tabs based on the F D
VariabilityWindow = New Window("Variability Chart",tb = Tab Box() );
For(i =1, i <=nTabs(dt2 << get row names()), i++,
tb << insert(
dt2: F D[i] || Char(i),
V list Box(
Button Box("Variability Chart #" || Char(i)),
)
)
);
당신이하려는 것은 요약 데이터 테이블에서 FD의 각 값에 대한 새로운 탭을 생성하는 것입니다.
스크립팅 인덱스를 검색하면 nTabs 또는 행 이름 가져 오기 ()가 존재하지 않는다는 것을 알 수 있습니다. nTabs가 원하는 테이블 수를 줄 것이라고 생각하신 것 같습니다. 프로그램의이 시점에서 테이블이 생성되지 않았고 요약 테이블이 생성 되었기 때문에 데이터 테이블의 행 수가 원하는 탭 수라는 생각을했을 것입니다. 생성물. 그러나 스크립팅 인덱스를 살펴보고 "N 행 ()"데이터 테이블에있는 행 수를 알려주고 N 행 ()에 대해 작성된 코드를 변경하면 어떤 솔루션이 나타날지 알아볼 수 있습니다
다음 코드는 원본 데이터 테이블에 "dt"라는 포인터 변수가 있다고 가정합니다.
dt2 = dt << Summary( Group( :F D ), Freq( "None" ), Weight( "None" ), invisible );
//Create Tabs based on the F D
VariabilityWindow = New Window( "Variability Chart", tb = Tab Box() );
For( i = 1, i <= nrows( dt2 ), i++,
tb << Insert(
dt2:F D[i] || Char( i ),
V List Box( Button Box( "Variability Chart #" || Char( i ) ), )
)
);
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);