테이블을 선택한 다음 열을 선택하세요.안녕하세요, 저는 JMP와 JSL을 처음 사용하는데 테이블과 2개의 열을 선택하고 그 작업을 수행하는 스크립트를 만드는 데 문제가 있습니다.
여기에 예가 있습니다.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> 0,
Print("Table selected: "||dtName[1]),
Print("No table selected")
)
);
/* Here I tried several options like
current data table (dt);
dt << get data table;
and other but I cannot find what fits well */
xvar = .;
yvar = .;
win = New Window( "Compared Values",
<<MODAL></MODAL></MODAL>이 예에서는 이미 열려 있는 테이블 중 하나를 선택하고 2개의 열을 선택한 다음 간단한 플롯을 수행할 수 있는 간단한 스크립트를 시도하고 있습니다. 그러나 내가 선택한 특정 테이블을 인식하도록 프로그램을 만들 수는 없습니다.
앞으로는 몇 개의 테이블과 동시에 상호 작용하고 다른 테이블에서 다른 열을 선택하여 결과를 얻어야 할 것입니다. 나는 이 스크립트가 쉬운 시작이라고 생각했습니다. 누군가 첫 번째 상자에서 선택한 테이블을 선택할 수 없는 이유나 개선 방법에 대한 간단한 설명과 함께 스크립트에 대한 해결책을 제공해 주시면 매우 감사하겠습니다.
감사해요!
자동화 및 스크립팅결과 공유 및 전달Re: 테이블을 선택한 다음 열을 선택하세요.스크립팅 가이드에서 모달 창에 대해 읽어 보시기 바랍니다.솔직히 말해서 스크립팅 가이드 전체를 읽어 보시기 바랍니다.
도움말==>JMP 문서 라이브러리
Re: 테이블을 선택한 다음 열을 선택하세요.정말 감사합니다. 귀하의 예를 통해 내 질문의 대부분이 명확해졌습니다. 내 주요 문제는 내 코드를 작동시키기 위해 테이블을 가리키는 방법이었습니다. 이제 이 모든 다양한 옵션을 보면 내 오류가 어디에 있는지 매우 명확해졌습니다.
한 가지 더, "라고 말하면 모달 창에는 확인 및 취소 버튼이 포함된 몇 가지 기본 작업이 있습니다.", 이에 대해 자세히 알아보려면 무엇을 권장하시나요? 스크립팅 가이드가 있지만 읽어보지 못했습니다. 거기서 찾을 수 있을까요? 아니면 다른 소스를 추천해주실 수 있나요?
감사해요!
Re: 테이블을 선택한 다음 열을 선택하세요.안녕,
해결했다고 생각되는 원본 스크립트의 추가 문제를 발견했습니다(예: Col List Box의 데이터 테이블에 대한 잘못된 참조).
코딩 관점에서 볼 때 여전히 약간 투박할 수 있는 내 솔루션은 다음과 같습니다.
Names Default to Here( 1 );
show (dt);
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> require the user to select two variables before clicking OK
Text Box( " Select test values. " ),
H List Box(
Text Box( "Select Variable " ),
x = Col List Box(
Data Table (dtxt), // data table reference > UPDATED the call to selected data table
all, // display all columns from the data table
xvar = (x << Get Selected)[1];
// get the name of the selected column before the window closes
Show( xvar );
),
Text Box( "Select ID" ),
y = Col List Box(
Data Table (dtxt), //> UPDATED the call to selected data table
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
Data Table (dtxt) << Graph Builder( // Added specific call to the seleted data table
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 1 ),
Variables( X( as column (xvar) ), Y( As Column (yvar) ) ),
Elements( Points( X, Y, Legend( 6 ) ) )
);</MODAL>Re: 테이블을 선택한 다음 열을 선택하세요.모달 창에는 확인 및 취소 버튼이 있는 몇 가지 기본 작업이 있는데, 이로 인해 발생하고 있다고 생각되는 코드가 엉망이 될 수 있습니다.기본 동작을 채택하고 원하는 것을 얻기 위해 코드를 간단하게 조정하는 것이 더 낫다는 것을 알았습니다.다음은 선택한 데이터 테이블을 현재 데이터 테이블로 설정하고 변수 "dt"를 데이터 테이블에 대한 포인터로 설정하도록 코드의 테이블 선택 부분을 수정한 것입니다.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>
@Thierry_S 문제를 해결하기 위해 목록을 사용하는 것이 좋습니다.하지만 저는 조금 다르게 합니다.이름뿐만 아니라 데이터 테이블에 대한 전체 참조를 목록에 저장합니다.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, data table(DataTable(t) << getName));
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>Re: 테이블을 선택한 다음 열을 선택하세요.정말 감사합니다. 하지만 문제가 해결되지는 않습니다. 실제로 이전에 이와 같은 스크립트가 있었는데 Col List Box가 선택한 데이터 테이블에 대한 열 목록을 업데이트하는 것을 관리할 수 없기 때문에 상황이 복잡해지기 시작했습니다. 어쩌면 내 문제가 코드의 해당 부분에 있는 것일까요?Re: 테이블을 선택한 다음 열을 선택하세요.안녕,
dtlb의 출력을 dt에 할당하기 위해 아래 첨자를 생성하면 복잡한 문제가 발생할 수 있는 것 같습니다.
다음 변형이 당신에게 더 잘 맞을지 궁금합니다. (더 이상 "OKScript"가 필요하지 않습니다.)
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>