추가 기능을 정상적으로 종료현재 데이터 테이블()에서 작동하는 추가 기능을 작성 중입니다. 다음과 같은 경우 추가 기능이 아무 작업도 수행하지 않고 정상적으로 종료되기를 바랍니다.
(a) 현재 데이터 테이블이 없습니다()
또는
(b) 현재 데이터 테이블에 <2개의 열이 있습니다.
나는 이것이 일어날 수 없을 것 같다. 추가 기능을 설치하고 생성된 .jmpcust 파일을 확인했습니다. "여기에 선언된 변수와 함수는 응용 프로그램 네임스페이스로 범위가 지정됩니다"라는 주석이 있는 스크립트 맨 위에 다음 코드가 있습니다.
dt = Current Data Table();
If(Is Empty(dt),
Quit Application()
);
Quit Application = Function({},
Current Window() << Close Window;
Throw()
)내가 *생각**한 것은 내가 아닌 Application Builder에 의해 삽입된 것입니다.
(a)를 수행하는 것이 올바른 것처럼 보이지만 대신 Current Data Table()이 없는 경우 내 추가 기능이 미리 청구하고 대화 창을 엽니다.
누군가 나를 도울 수 있습니까?
스크립팅Re: 추가 기능을 정상적으로 종료사용자에 대한 피드백 없이 스크립트가 중지되기를 원하십니까? 그렇다면 throw("info text")를 stop()으로 바꾸면 스크립트가 거기서 종료됩니다. 나는 그것이 응용 프로그램 스크립트에서 동일하게 작동할 것이라고 상상하지만 나는 그것을 사용해 본 적이 없습니다.
Re: 추가 기능을 정상적으로 종료그러나 오류 대화 상자를 전혀 표시하지 않고 Throw()하는 방법을 알고 싶습니다. txnelson의 최근 게시물이 이 문제를 해결한다고 생각하지만 그것이 무엇을 하고 어떻게 작동하는지 혼란스럽습니다.
Re: 추가 기능을 정상적으로 종료그 동안 txnelson의 게시물 중 하나를 보면서 해결책을 찾은 것 같습니다. 응용 프로그램 스크립트에 다음을 넣었습니다.
If( N Table() == 0,
Throw( "Add-in requires an open data table." )
);
dt = Current Data Table();
If( N Cols( dt ) < 2,
Throw(
"Add-in requires a table with at least two columns."
)
);
Re: 추가 기능을 정상적으로 종료스크립트 편집기에서 디버깅을 시도했지만 저장하지 않고 편집기를 닫았습니다. 나는 그것을 다시하고 다시 실행할 때까지 무슨 일이 일어 났는지 깨닫지 못했습니다.함수는 호출되기 전에 정의되어야 하므로 순서가 잘못된 것처럼 보입니다.
나는 응용 프로그램 빌더를 사용한 적이 없습니다. GUI가 호출되기 직전에 스크립트 수준에서 이러한 종류의 제어를 수행합니다. 기본적으로 내 스크립트는 다음과 같습니다.
1. 초기 항목 위로
2. 메인 스크립트 기능
3. dt를 할당하고 GUI 진행 여부를 결정
4. ok 버튼이 스크립트 기능을 호출하는 GUI.
다음은 데이터 테이블을 확인하는 방법입니다. 이것의 수정된 버전을 사용하고 ncol(dt) >= 2를 확인할 수도 있습니다.
dtData = current data table();
try(dtData << get name, throw(New Window("No Data Table Found",<<MODAL></MODAL>