포그라운드에서 실행 중인 쿼리 상태JSL을 사용하여 포그라운드에서 실행 중인 쿼리 상태에 대해 사용자를 업데이트할 수 있습니까? 실행하는 데 몇 시간이 걸리는 SQL 쿼리가 있고 스크립트가 열린 후 테이블에서 작동해야 하므로 백그라운드 쿼리로 실행할 수 없습니다.
현재 저는 Open Database()를 사용하고 있습니다.
/* fictitious database and table */
dt = Open Database( "DSN=ODBC Connection",
"SELECT * FROM some_table" )
Re: 포그라운드에서 실행 중인 쿼리 상태고마워요 에릭님,
쿼리에서 실행하기 위해 스크립트를 분할하는 것은 약간의 작업이지만 작업이 완료되는 것처럼 보입니다.
Re: 포그라운드에서 실행 중인 쿼리 상태이봐, 에에,
포그라운드 쿼리에서 상태를 업데이트할 수 있는 방법은 없습니다. 쿼리가 JMP의 메인 스레드를 묶어서 JMP가 실행되는 동안에는 실제로 아무것도 할 수 없기 때문입니다.
제가 제안하는 해결 방법은 쿼리 빌더를 사용하여 쿼리를 생성한 다음(실행하려는 SQL이 이미 있는 경우 사용자 지정 SQL 사용) 쿼리를 파일로 저장하는 것입니다. 디스크에서 이름이 "oneMillionRows.jmpquery"라고 가정해 보겠습니다.
그런 다음 다음과 같은 스크립트를 작성합니다.
query = include("oneMillionRows.jmpquery");
query << Run Background(
On Run Complete(
Write("\!NQuery is complete! Rows in result: ", NRows(queryResult));
)
);
쿼리가 완료된 후 실행하려는 JSL은 무엇이든 실행 완료 시 매개변수 배경 실행() . 따라서 쿼리가 실행되는 동안에도 JMP를 계속 사용할 수 있습니다. 사용자는 다음을 사용할 수 있습니다. 보기 > 쿼리 실행 진행 상황을 보려면. 보고할 진전이 많을지 여부는 쿼리가 대부분의 시간을 실행 단계에서 소비하는지 아니면 데이터 검색 단계에서 소비하는지에 따라 달라집니다. 실행 단계에서는 데이터베이스로부터 어떠한 업데이트도 받지 않습니다. 쿼리가 실행된 후 데이터베이스에서 데이터를 가져올 때 검색된 행 수를 업데이트합니다.
에릭
Re: 포그라운드에서 실행 중인 쿼리 상태쿼리 자체를 처리하는 데 오랜 시간이 걸리는 경우 실제로 데이터를 읽을 때까지 진행률 표시줄이 표시되지 않습니다. 최소한 무슨 일이 일어나고 있는지 알려주기 위해 caption() 명령을 사용하여 사용자에게 메시지를 보냅니다. 일부 응용 프로그램의 경우 소요 시간을 추정할 수 있으며 이를 메시지에 포함하겠습니다. 시간은 상대적이다!
caption("Reading data, please be patient...");
wait(0);
/* fictitious database and table */
dt = Open Database( "DSN=ODBC Connection",
"SELECT * FROM some_table" );
caption(remove);
wait(0);
Re: 포그라운드에서 실행 중인 쿼리 상태위의 내용은 실제로 백그라운드 쿼리에 대한 것임을 언급해야 합니다. 죄송합니다.포그라운드 쿼리의 경우 사용자에게 읽은 레코드 수를 알리고 추가 입력을 방지하는 진행률 표시줄이 있어야 합니다.
브라이언
Re: 포그라운드에서 실행 중인 쿼리 상태이에 대한 전용 JSL 옵션은 없습니다.JMP UI가 표시되면 보기->쿼리 실행 메뉴 항목을 사용하여 언제든지 쿼리 상태를 확인할 수 있습니다. JSL 내에서 기본 메뉴 명령을 사용하여 다음과 같은 대화 상자를 불러올 수도 있습니다.
메인 메뉴("보기:쿼리 실행");
브라이언 코코란
JMP 개발