내가 미쳐 가는가, 아니면 어떻게 가능 할까? - 이상한 행동 문제 해결에 도움이 필요합니다.내 앱에서 발생한 문제로 하루 종일 문제를 해결하고있었습니다. 나는 이것을 매우 제인적인 행동으로 좁혔다. 내가 뭔가를 놓치지 않는 한, 이것은 이런식이해서는 안된다.
두 개의 테이블이 열렸습니다 : "Baseball"과 "Basketball".
나는이 스크립트를 가지고있다 :
Clear Log();
//dt_current=Data Table("Basketball");
/*Two tables opened: Baseball and Basketball. The table named "Basketball" is selected as current table*/
dt_working=Data Table("Baseball");
Show("This is the dt_working table:");
Show(dt_working<<GET name=""></GET>분명히, 야구 테이블에서 열이있는 콜 목록 상자를 만들려고합니다.
그러나 이것은 내 로그 (및 앱의 나머지 부분)가 표시하는 것입니다.
"This is the dt_working table:";
dt_working << Get Name() = "Baseball";
"Columns names:";
colNamesList = {Player, Batting};
"This is what dt_working still is:";
dt_working << Get Name() = "Baseball";
"But this is what I got in Col List Box:";
colListX << Get Items = {"School", "CSN", "Durham Sun", "Durham Herald", "Washington Post", "USA Today", "Sports Magazine", "In Sport", "UPI", "AP", "Sports Illustrated"};어떤 이유로 dt_working을 Baseball로 지정하고 dt_working 테이블을 사용하여 Col List Box를 만들었더라도 Col List Box에 도구 모음에서 선택한 현재 데이터 테이블의 열을 채 웁니다.
일반적으로 코드가 다르지만 특정 부분이 다른 앱은 완전히 똑같고 작동 방식이 다릅니 다. 누군가 내가 더 이상 문제를 해결하도록 도울 수 있습니까? 왜 내가 목록에 채운 테이블이 아니라 현재 테이블에서 Col List Box를 채우는가?
장기적으로 나는 다른 목록 상자에서 선택한 테이블의 열을 표시하려고합니다. 다른 응용 프로그램에서 비슷한 기능을 잘 작동합니다. 여기에 어떤 표를 클릭하든 (내가 인용 한 것과 유사한 코드를 실행해도) 항상 위에 선택된 표의 열이 표시됩니다.
감사,
엠.
Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다. @MathStatChem 쓴 :
lso, 스크립팅 가이드의 구문을 보면 구문이 데이터 테이블 참조의 사용을 허용하지 않는 것으로 보입니다. 구문을 사용해야합니다.
y = 콜리스트 박스 (<데이터 테이블 (이름)>, ...)
Col List Box ()에 대한 인수의 데이터 테이블 ()은 Col List Box ()가 인수를 데이터 테이블로 해석해야한다는 것을 알려주는 명명 된 인수의 함수가 아닙니다. 따라서 데이터 테이블 참조를 인수로 사용합니다. 다음은 그 예입니다.
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA\Solubility.jmp" );
New Window("Example", Col List Box( Data Table( dt ), all ) );
<< Get Name 메시지가 필요 없습니다.
첫 번째 인수가 데이터 테이블 참조인지 여부를 자동으로 감지하려고합니다.
감사합니다. @Justin_Chilton 설명을 위해.
Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다.
@ gzmorgan0 쓴 :
예, ColListBox (데이터 테이블 (dt_ref << getname), ...)를 사용하는 것이 좋습니다.
그리고 그것은 작동합니다! 오늘 두 번 나를 구해 줬어!
Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다.좋아, 아마도 버그가 아니기 때문에 나는 오래된 이메일을 찾아야 할 것이다. 그러나 어딘가에 ColListBox (dt, ...)가있는 참조를 발견하고 JMP를 표시했다.
예, ColListBox (데이터 테이블 (dt_ref << getname), ...)를 사용하는 것이 좋습니다.
Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다.또한 스크립팅 가이드의 구문을 살펴보면 구문에서 데이터 테이블 참조를 사용할 수없는 것으로 보입니다. 구문을 사용해야합니다.
y = 콜리스트 박스 (<데이터 테이블 (이름)>, ...)
그래서이 코드를 사용하면
y=Col List Box( Data Table(dt_working<<GET name=""></GET>
원하는 결과를 제공합니다. 나는 그것이 버그라고 생각하지 않는다. 그것은 단지 clunky syntax이다.
Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다.아, 알았어. 따라서 Col List Box는 데이터 테이블 참조가 아닌 현재 데이터 테이블을 사용하고 있습니다. 빠른 수정, 스크립트에, colList 문 바로 앞에 다음 문을 삽입하는 것입니다.
현재 데이터 테이블 (dt_working);
Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다.예, 저는 다른 스크립트를 열어 보았지만 거기에는
예정된. 조지아의 해결 방법을 시도해보고 효과가 있는지 알려줍니다. 나는
강한 의심, 그것은 큰 것이 었습니다.
똑같은 코드가 다른 앱에서 잘 작동했기 때문에.Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다.예제 데이터에서 Baseball.JMP 테이블을 사용하여 코드를 실행했는데보고있는 동작을 보지 못했습니다. 여기에 내 로그 출력이 있습니다.
"This is the dt_working table:";
dt_working << Get Name() = "Baseball";
"Columns names:";
colNamesList = {Player, Batting};
"This is what dt_working still is:";
dt_working << Get Name() = "Baseball";
"But this is what I got in Col List Box:";
colListX << Get Items = {"Player", "Batting"};다른 테이블에서 colListX 참조를 만든 다른 스크립트를 열어 보았습니까?
스크립트 시작 부분에서 이름 기본값을 Here (1) 명령을 사용하는 것이 가장 좋습니다. 그렇게하지 않으면 모든 변수가 전역 변수가되며 두 개의 다른 스크립트가 서로의 변수를 처리 할 수 있습니다.
Re : 미쳤나요, 어떻게 가능하니? - 이상한 행동 문제 해결에 도움이 필요합니다.나는 이것을 버그라고 부를 것이다. 나는 작년에 잡혔다. 그러나 해결책이 있습니다. 문제는 ColListBox가 테이블 참조 dt_working을 평가하거나 구문 분석하지 않는다는 것입니다. 내 추천은 구문 ColListBox (데이터 테이블 (dt_working << 이름 가져 오기))를 사용하는 것입니다. 또는 colListX가 작성 될 때 의도 한 테이블을 현재 데이터 테이블로 만들 수 있습니다.
내 JSl 래핑입니다. 첨부 된 스크립트.
open("$Sample_data/Basketball.jmp");<BR />open("$Sample_data/Baseball.jmp");<BR /><BR />Clear Log();<BR /> //dt_current=Data Table("Basketball");<BR /> /*Two tables opened: Baseball and Basketball. The table named "Basketball" is selected as current table*/<BR /> dt_working=Data Table("Baseball");<BR /> <BR /> Show("This is the dt_working table:");<BR /> Show(dt_working<<GET name=""></GET> colNamesList = dt_working << Get Column Names;<BR /> show("Columns names:");<BR /> show(colNamesList);<BR /> show(current data table()); //Baseball<BR /> <BR /> colListX = Col List Box (all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET><BR /> //_______________________________________________________<BR /> <BR /> Write("\!N" ||Repeat("_",60)||"\!N");<BR /> <BR /> //make Basektball current <BR /> <BR /> current data table(Data Table("Basketball"));<BR /> <BR /> colListX = Col List Box (dt_working, all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET><BR /> colListX = Col List Box (NameExpr(dt_working), all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET><BR /> colListX = Col List Box (Data Table("Baseball"), all, width(250), maxSelected(1));<BR /> show(colListX<<GET items=""></GET> <BR /> <BR /> colListX = Col List Box (Data Table(dt_working<<GET name=""></GET> show(colListX<<GET items=""></GET><BR /><BR /> Eval( <BR /> Parse( EvalInsert("colListX = ColListBox( ^dt_working^, all, width(250), maxSelected(1));") )<BR /> );<BR /> wait(0);<BR /> show(colListX<<GET items=""></GET>