디스패치 용 하위 스크립트 검색 사용<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요. 보고서가 생성 된 후 보고서에 정보를 보내는 데 문제가 있습니다. 이 보고서에는 인덱스 i가있는 for 루프에 작성된 여러 배포가 들어 있습니다. 각 배포판은 자체 윤곽선 상자 안에 들어 있으므로 각 윤곽선 상자 안에 다른 것들을 많이 추가 할 수 있고 관련 자료를 함께 그룹화 할 수 있습니다. 나는 이들 각각의 분포에 대한 참조를 저장한다. (distObj ), 나는 distObj [1] <<와 같이 그들을 다루는 것으로 그들을 바꿀 수있다. 하지만 여기에 잡힌 내용이 있습니다. 보고서에있는 라디오 상자를 사용하고 있습니다. 하나의 라디오 상자를 개요 상자 당 하나씩 (예 : 배포별로) 사용하고 있습니다. 다른 라디오 버튼을 클릭하면 i 번째 매개 변수의 축의 축척이 3 가지 방법 중 하나로 변경됩니다. 스크립트가 완료된 후 변수 i는 for의 각 반복에 대해 마지막 값으로 증가했기 때문에 더 이상 각 상자에 매핑되지 않습니다. 클릭 한 세트 (본질적으로 'i')가 무엇인지 파악하고 제한 배율 정보를 해당 배포에만 보내야합니다. 내가 서브 스크립트를 하드 코드하지만 실제로 작동하지 않을 경우 작동하는지 확인했습니다.
나는 숫자로 편집 상자를 작성하는 것과 같은 몇 가지를 시도했다. 그래서 실제로 보고서에 저장된다. 그러나 나는 여전히 특정 변수를 얻으려고 문제를 겪는다. .
스크립팅 가이드에는 도움이 될만한 내용이 있지만 사용 방법을 모르겠습니다. JMP 10 스크립팅 가이드의 페이지 335, 트리 표시 장, 아래 첨자. 그들은 db = "text"] 또는 db [ "text?"] 코드를 사용하여 표시 상자 db에 대해 "text"가있는 객체를 찾을 수 있다고 제안합니다. 와일드 카드로. 내가 이것이 도움이 될 수 있다고 생각하는 이유는 i 번째 매개 변수에 대한 첨자에 의존하는 대신 distObj를 기반으로 한 일치를 찾는 것입니다. 라디오 버튼이 하나의 노드를 찾고 아웃 라인 박스 (또는 동일한 노드에있을 수도 있음)로 찾아 가서 적절한 db 참조를 얻고 거기에서 명령을 보내도록 명령을 보내려고합니다. 나는 이것을 작동 시키려고 노력했다. 그러나 내가 틀린 나무를이 나무로 짖고 있는지 궁금하게 생각해야한다.
다음은 내 스크립트의 관련 부분입니다. 라디오 박스 섹션에서 "stored_i"변수는 "i"가 될 수도 있습니다. 그것은 실제로 작동하지 않는 테스트였습니다.
어떤 아이디어?
custRpt = 새 창 (titleString,
AnaNotesBox = 개요 상자 ( "분석 노트",
텍스트 상자 (textString1),
)
);
distObj = {};
rb1 = {};
rb2 = {};
rb3 = {};
paramBoxList = {};
For (i = 1, i <= AdjNumParam, i ++,
custRpt << append (
ParamBoxList = 개요 상자 (newYparamName) ,
V 목록 상자 (
hlistbox (
RB1 = 라디오 박스 ( "스케일 방법 1", 쇼 ( "test1"); stored_i = numBox << (숫자 값); 표시 (stored_i);
distObj [stored_i] << SendToReport (
급파(
{},
"1",
ScaleBox,
{Min (newMin [stored_i], newLSL [stored_i]), Max (newMax [저장된 _i], newUSL [저장된 _i]), Inc (2)
보조 틱 (1), 회전 라벨 ( "수평")}
));
),
RB2 = 라디오 박스 ( "스케일 방법 2", stored_i = numBox << Get (수치);
distObj [stored_i] << SendToReport (
급파(
{},
"1",
ScaleBox,
{Min (newMin [stored_i]), Max (newMax [stored_i]), Inc (2),
보조 틱 (1), 회전 라벨 ( "수평")}
));
),
rb3 = 라디오 박스 ( "스케일 방법 3", stored_i = numBox << Get (수치);
distObj [stored_i] << SendToReport (
급파(
{},
"1",
ScaleBox,
{Min (newLSL [stored_i]), Max (newUSL [stored_i]), Inc (2),
보조 틱 (1), 회전 라벨 ( "수평")}
));
),
numBox = 숫자 입력란 (i), // <- numBox는 아래 첨자가 없으므로 작동하지 않습니다.
// stored_i = numBox << Get (숫자 값)
// numParam = numParamVal << Get (숫자 값);
),
RB1 << 그룹 (rb2 ) << 그룹 (rb3 ),
H 목록 상자 (
distObj = 배포 (
Y (평가 목록 (newYparamName) )))),
),
페이지 나누기 상자 ();
)
)
);
);
제목 : Re : 검색을 위해 아래 첨자 검색 사용마지막으로이 스레드에서 후속 조치를 수행합니다. 위에서 언급 한 문제는 변수가 부실하고 스크립트가 추가로 설치되었을 때 문제가되지 않기 때문에 보고서의 이전 버전에서 라디오 상자를 클릭하면 오류가 발생합니다 -에서. 나는 .jsl 파일에서 .jsl 파일을 직접 실행하여 왜 실패했는지 확신 할 수 없기 때문에 .jsl 파일에 "여기에 이름이 기본 (1)"이 있습니다. 하지만 어쨌든 나는이 스레드를 후계에 맞게 업데이트 할 것이라고 생각했습니다.
누구든지 일반적인 오류 처리에 대한 대답을 가지고 있다면, 그 점을 인정할 것입니다. 내가 뭔가 이상한 사용자 입력을 고려하지 않은 경우에 대비하여 일반적인 오류 캐치 전체를 찾고 있습니다. 스크립트를 정상적으로 종료하고 싶습니다.
감사.
제목 : Re : 검색을 위해 아래 첨자 검색 사용이 스크립트에서 잠재적 인 문제점을 발견했지만 이전 보고서 창을 두 번 이상 열어 두어야합니다. 이전 보고서 인스턴스의 라디오 상자는 최신 보고서 창 인스턴스로 메시지를 보냅니다. 왜 이런 일이 발생하는지 이해가되지만, 보고서가 20 개의 플롯으로 반복 생성되고 두 번째가 3 개의 플롯으로 반복되면 첫 번째 창에있는 첫 번째 3 세트의 라디오 버튼이 최신 창으로 명령을 보내고 4 ~ 20 개의 라디오 버튼으로 에러가 발생합니다 (제 경우에는 distObj [4] ...). distObj [20]은 정의되지 않음). distObj가 참조하는 긴 Eval Insert () 문자열을 코딩 할 수 있습니까? 아니면 JSL에 대해 너무 많이 묻는 것입니까?
또한 catchall을 처리하는 중 오류가 있습니까? Eval Insert () 문자열에 오류가 표시되는 것을 막기 위해 코드를 작성할 수 있다고 가정하지만 처리되지 않은 다른 오류가 숨어있을 수 있는지는 알지 못합니다. 예를 들어, VBA에서 "error goto errorHandler"와 같은 것을 사용하고 끝에 "errorHandler :"루틴을 조금씩 사용하면 정상적으로 종료됩니다.
감사.
제목 : Re : 검색을 위해 아래 첨자 검색 사용모든 답장 MS 주셔서 감사합니다.
며칠 동안 여기저기서 코드를 가지고 놀았으며 구획 문자에 대해 더 잘 느끼고 있습니다. 업데이트 된 코드가 더 마음에 들었고, Dispatch ()가 지저분하다는 것에 동의합니다. 새로운 코드로 변환했습니다.
더블 클릭 대화 상자에서 사용할 수 없더라도 축을 마우스 오른쪽 버튼으로 클릭 할 때 옵션이 있기 때문에 "축 되돌리기"를 사용할 수 있다고 생각했습니다. 내가 부울 설정보다 함수가 될 것이라고 생각합니다. 별로 중요하지 않습니다. 방금 스크립트에서 해당 기능을 제거했습니다. 이 기능과 같은 이유는 JMP가 내가 할 수있는 것보다 훨씬 더 축을 축척 할 수 있기 때문입니다. 몇 가지 수학적 방법을 시도했지만 일관되게 작동하는 것을 찾지 못했습니다. (나는 min (), max (), inc ()를 설정하기 위해 USL, LSL, spec 너비의 많은 계산을 시도했다.
복사 / 붙여 넣기 JSL을 단어로 빠르게 테스트 한 다음 FF로 단어를 추출합니다 (Win XP). 고마워. 고마워.
hlb_1 << 추가하다 (
평가 (
파싱 (
평가 삽입 (
"\ [^"rb1 [ "|| char (i) ||"] "^ = 라디오 박스 ("데이터에 스케일 + 한계 ",
보고서 (distObj [^ i ^]) [AxisBox (1)] << Min (^ minMinLSL_scale ^) << Max (^ maxMaxUSL_scale ^) << Inc (^ inc1_scale ^);
(k = 1, k <= nitems (^ groupList ^), k ++, (k)에 대해 (nitems (^ groupList ^)> = 1 & groupList [1]
보고서 (oneObj [^ i ^]) [AxisBox (1)] << Min (^ minMinLSL_scale ^) << Max (^ maxMaxUSL_scale ^) << Inc (^ inc1_scale ^);
))
)
] \ "
)
)
)
) ;
제목 : Re : 검색을 위해 아래 첨자 검색 사용질의 응답
왜 당신 스크립트에서 나는 구분 기호 '^'를 얻지 만 distObj는 그렇지 않습니까?
그것은 distObj 주변의 분리 문자로는 작동하지 않았습니다. 아마도 객체를 가리키는 변수가 필요할 것입니다 (예 : distObj [1]). 우리가 명확한 텍스트, 즉 문자열 []이 파싱 될 때 JMP에 이해가되지 않는 Distribution []으로 목록 Item을 얻을 것이라고 완전히 평가했습니다.
위의 코드 섹션 (라디오 박스 중 하나)을 수정하여 축을 되돌릴 수 있습니까?
유통 플랫폼이 아닌 것 같습니다. 작동하지 않습니다. 축을 두 번 클릭하여 축 설정 대화 상자를 호출하면 축 되돌리기 확인란이 표시되지 않습니다.
또한 코드 붙여 넣기 방법은 무엇입니까?
JSL 편집기에서 브라우저로 복사하여 붙여 넣기 만하면됩니다. 새 포럼에서는 대부분의 서식이 유지되지만 들여 쓰기가 부분적으로 손실됩니다. 이전 포럼에서는 MS Word에 먼저 붙여 넣은 다음 브라우저에 붙여 넣어야했습니다. 제대로 기억한다면. Mac 용 JMP 10을 사용합니다. Windows에서는 다르게 작동합니다.
이 모든 것을 어디에서 배웠습니까?
자기 연구, 많은 시행 착오 및 포럼에서 사람들을 실제로 돕는 것은 실제로 많은 것을 가르쳐주었습니다.
Btw, 나는 거의 Dispatch () 메서드를 사용하지 않습니다. 구문은 복잡하며 주로 자동 생성 된 스크립트에 있습니다. 관심있는 디스플레이 박스에 직접 메시지를 보내는 것이 훨씬 간단합니다 (<< 트리 구조보기 명령은 특정 db를 처리하는 방법을 찾는 데 유용합니다; 예를 들어 distObj [1] << show tree structure를 시도하십시오).
위의 스크립트 (단순히 발췌 부분)와 비교해보십시오.
hlb_1 << 추가하다 (
평가 (
파싱 (
평가 삽입 (
"([배율 방법 3], report (distObj [^ i ^]) [AxisBox (1)] << Min (^ newMin) ^) << Max (^ newMax ^))] \ "
)
)
)
) ;
제목 : Re : 검색을 위해 아래 첨자 검색 사용위의 코드 섹션 (라디오 박스 중 하나)을 수정하여 축을 되돌릴 수 있습니까? 되돌리기 축 명령이 있지만 작동하지 않는 것 같아요, 아래 두 시도입니다.
또한 코드 붙여 넣기 방법은 무엇입니까? jsl 파일을 업로드합니까? 귀하의 서식을 복제 할 수 없었습니다.
hlb_1 << append (
평가 (
파싱 (
평가 삽입 (
"\ [^"rb4 [ "|| char (i) ||"] "^ = 라디오 박스 ("Revert Axis ",
distObj [^ i ^] << SendToReport (
급파(
{},
"1",
축 상자 (1),
축 되돌리기
));
)] \ "
)
/ *
평가 삽입 (
"\ [^"rb4 [ "|| char (i) ||"] "^ = 라디오 박스 ("Revert Axis ",
distObj [^ i ^] [축 상자 (1)] << 축 되돌리기;
)] \ "
) * /
)
)
);
제목 : Re : 검색을 위해 아래 첨자 검색 사용안녕하세요, MS,
우선, 도와 주셔서 대단히 감사합니다. numbox는 rbx의 어떤 인스턴스를 클릭했는지에 대한 액세스를 시도했습니다. 그것은 작동하지 않았다.
귀하의 j-loop에있는 목록이 실제로 다른 이름을 가지므로 모든 것을 타이핑해야하므로 스크립트를 약간 변경해야했습니다 (아래 참조). 이러한 편집을 통해 모든 것이 완벽하게 작동합니다 (지금까지). JMP가 다양한 제한에 대한 크기 조정을 얼마나 잘 처리하는지 알 수 있습니다.
나는 몇 가지 질문이있다. 왜 당신 스크립트에서 나는 구분 기호 '^'를 얻지 만 distObj는 그렇지 않습니까? 특수 문자가 무엇을하는지 파악하는 데 약간 시간이 걸렸지 만이 시점에서는 여전히 혼란 스럽습니다.
이 모든 것을 어디에서 배웠습니까? SAS를 통한 자체 학습 또는 공식 JMP 교육?
dtData = Open ( "$ SAMPLE_DATA / Big Class.jmp");
dtData : age << 모델링 유형 (연속);
newMin = {12, 50, 64};
newMax = {17, 70, 172};
newLSL = {10, 40, 50};
newUSL = {20, 80, 200};
newLSL2 = {5, 20, 0};
newUSL2 = {25, 100, 300};
newYparamName = { "연령", "신장", "체중"};
adjNumParam = 3;
{distObj, paramBoxList, rb1, rb2, rb3} = {{}, {}, {}, {}, {}};
custRpt = 새 창 ( "제목",
AnaNotesBox = 개요 상자 ( "분석 노트",
텍스트 상자 ( "정보 ..."),
)
);
For (i = 1, i <= AdjNumParam, i ++,
custRpt << append (
ParamBoxList = 개요 상자 (newYparamName) ,
vlb = V 목록 상자 (
hlb_1 = H 목록 상자 (),
hlb_2 = 목록 상자 (
distObj =
배포 (Y (평가 목록 (newYparamName )))),
),
페이지 나누기 상자 ()
)
)
);
// For (j = 1, j <= 3, j ++,
hlb_1 << append (
평가 (
파싱 (
평가 삽입 (
"\ [^"rb1 [ "|| char (i) ||"] "^ = 라디오 박스 ("Scale method 1 "
distObj [^ i ^] << SendToReport (
급파(
{},
"1",
ScaleBox,
{민 (^ newMin ^), 최대 (^ newMax ^)}
));
)] \ "
)
)
)
);
hlb_1 << append (
평가 (
파싱 (
평가 삽입 (
"\ [^"rb2 [ "|| char (i) ||"] "^ = 라디오 박스 ("Scale method 2 "
distObj [^ i ^] << SendToReport (
급파(
{},
"1",
ScaleBox,
{Min (^ newLSL ^), 최대 (^ newUSL ^)}
));
)] \ "
)
)
)
);
hlb_1 << append (
평가 (
파싱 (
평가 삽입 (
"\ [
^ "rb3 ["|| char (i) || "]"^ = 라디오 박스 ( "Scale method 3",
distObj [^ i ^] << SendToReport (
급파(
{},
"1",
ScaleBox,
{민 (^ newLSL2 ^), Max (^ newUSL2 ^)}
));
)] \ "
)
)
)
);
//);
RB1 << 그룹 (rb2 ) << 그룹 (rb3 );
);
제목 : Re : 검색을 위해 아래 첨자 검색 사용루프에서 점진적으로 보고서를 작성하는 경우 보고서의 가치를 "고정"하는 것이 중요합니다. 나는 디스플레이 박스와 액션 스크립트에서. 이를 수행하는 한 가지 방법은 문자열을 사용하고 각 반복에서 Parse (Evalinsert ( "code"))를 사용하여 코드를 업데이트하고 평가하는 것입니다. 별로 좋지는 않지만 일련의 코드를 사용하면 상황을 쉽게 제어 할 수 있습니다.
아래는 예제 코드를 더 잘 작동시키기위한 시도입니다. 나는 그것이 왜 거기에 있었는지 알아낼 수없는 numBox 물건을 건너 뛰었다.
dtData = 열다 ( "$ SAMPLE_DATA / Big Class.jmp" ) ; dtData : 나이 << 모델링 유형 ( 마디 없는 ) ;
newMin = { 12 , 15 명 , 64 개 } ;
뉴 맥스 = { 17 , 70 , 172 } ;
newLSL = { 10 , 40 , 50 } ;
newUSL = { 20 , 80 , 200 } ;
newYparamName = { "나이" , "신장" , "무게" } ; adjNumParam = 삼 ;
{ distObj , paramBoxList , RB1 , RB2 , rb3 } = {{} , {} , {} , {} , {}} ;
custRpt = 새창 ( "표제" ,
AnaNotesBox = 개요 상자 ( "분석 노트" ,
텍스트 상자 ( "정보..." ) ,
)
) ;
에 대한 ( 나는 = 1 , 나는 <= AdjNumParam , 나는 ++,
custRpt << 추가하다 (
ParamBoxList [ 나는 ] = 개요 상자 ( newYparamName [ 나는 ] ,
vlb = V 목록 상자 (
hlb_1 = H리스트 박스 () ,
hlb_2 = H리스트 박스 (
distObj [ 나는 ] =
분포 ( 와이 ( 평가 목록 ( newYparamName [ 나는 ] ) ) ) ,
) ,
페이지 나누기 상자 ()
)
)
) ;
에 대한 ( j = 1 , j <= 삼 , j ++,
hlb_1 << 추가하다 (
평가 ( 파싱 ( 평가 삽입 (
""[= "char (j)"| "char (i) ||"] "^ = radioBox ("Scale method "|| char (^ j ^),
distObj [^ i ^] << SendToReport (
급파(
{},
"1",
ScaleBox,
{민 (^ newMin^), 최대 (^ newMax^)}
));
)] \ "
))))
)
) ;
RB1 [ 나는 ] << 그룹 ( RB2 [ 나는 ] ) << 그룹 ( rb3 [ 나는 ] ) ;
) ;
제목 : Re : 검색을 위해 아래 첨자 검색 사용다음은 큰 클래스를 예제 파일로 사용하여 현재 실행되는 위 코드의 버전입니다. 다시 말하면, stored_i는 업데이트되지 않고, 어떤 라디오 박스 세트가 명령을 전송하는지 알아내는 것입니다. 어떤 제안이라도 고맙게 생각합니다.
로그 지우기();
이름은 기본적으로 여기에 있습니다 (1);
명확한 전역 ();
dtData = Open ( "$ SAMPLE_DATA / Big Class.jmp");
// dtData = 데이터 테이블 ( "Big Class.jmp");
// show (dtData);
newMin = {12, 15, 64};
newMax = {17, 70, 172};
newLSL = {10, 40, 50};
newUSL = {20, 80, 200};
newYparamName = { "연령", "신장", "체중"};
adjNumParam = 3;
custRpt = 새 창 ( "제목",
AnaNotesBox = 개요 상자 ( "분석 노트",
텍스트 상자 ( "정보 ..."),
)
);
distObj = {};
rb1 = {};
rb2 = {};
rb3 = {};
paramBoxList = {};
For (i = 1, i <= AdjNumParam, i ++,
custRpt << append (
ParamBoxList = 개요 상자 (newYparamName) ,
V 목록 상자 (
hlistbox (
RB1 = 라디오 박스 ( "스케일 방법 1", 쇼 ( "test1"); stored_i = numBox << (숫자 값); 표시 (stored_i);
distObj [stored_i] << SendToReport (
급파(
{},
"1",
ScaleBox,
{Min (newMin [stored_i], newLSL [stored_i]), Max (newMax [저장된 _i], newUSL [저장된 _i]), Inc (2)
보조 틱 (1), 회전 라벨 ( "수평")}
));
),
RB2 = 라디오 박스 ( "스케일 방법 2", stored_i = numBox << Get (수치);
distObj [stored_i] << SendToReport (
급파(
{},
"1",
ScaleBox,
{Min (newMin [stored_i]), Max (newMax [stored_i]), Inc (2),
보조 틱 (1), 회전 라벨 ( "수평")}
));
),
rb3 = 라디오 박스 ( "스케일 방법 3", stored_i = numBox << Get (수치);
distObj [stored_i] << SendToReport (
급파(
{},
"1",
ScaleBox,
{Min (newLSL [stored_i]), Max (newUSL [stored_i]), Inc (2),
보조 틱 (1), 회전 라벨 ( "수평")}
));
),
numBox = 숫자 입력란 (i), // <- numBox는 아래 첨자가 없으므로 작동하지 않습니다.
// stored_i = numBox << Get (숫자 값)
// numParam = numParamVal << Get (숫자 값);
),
RB1 << 그룹 (rb2 ) << 그룹 (rb3 ),
H 목록 상자 (
distObj = 배포 (
Y (평가 목록 (newYparamName) )))),
),
페이지 나누기 상자 ();
)
)
);
);