Re: 두 개의 관련 열을 기반으로 하는 GUI 콤보 상자두 번째 콤보 상자의 옵션을 제한하려면 기능(또는 스크립트)을 추가해야 합니다. 아래 옵션 하나(JMP14에서 작동해야 한다고 생각합니다)
Names Default To Here(1);
v1 = "";
v2 = "";
dt = Open("$DOWNLOADS/JMP_Question.xlsx", Worksheets("Sheet1"), invisible);
Summarize(dt, uniqvals = by(:Column 1));
aa_options = Associative Array();
For(i = 1, i <= N Items(uniqvals), i++,
col1_idx = dt << Get Rows Where(:Column 1 == uniqvals[i]);
col2_vals = dt[col1_idx, "Column 2"];
aa_options[uniqvals[i]] = col2_vals;
);
nw = New Window("Set the Value",
Lineup Box(N Col(2),
Text Box("Col1"),
cb1 = Combo Box(uniqvals, << set function(function({this},
cb2_vals = aa_options[(this << get selected)];
cb2 << Set Items(cb2_vals);
)), << Set(1)
),
Text Box("Col2"),
cb2 = Combo Box(aa_options[uniqvals[1]])
),
H List Box(
Button Box("OK",
v1 = cb1 << get selected;
v2 = cb2 << get selected;
nw << close window;
show(v1, v2);
),
Button Box("Cancel", nw << close window)
)
);
Re: 두 개의 관련 열을 기반으로 하는 GUI 콤보 상자감사합니다. 보기 쉽게 만드셨습니다. 
그것은 효과가 있었다.
Re: 두 개의 관련 열을 기반으로 하는 GUI 콤보 상자안녕 자모,
대화 상자에서 겪었던 또 다른 문제는 목록을 입력으로 사용하는 것입니다.
다음 코드를 사용하는 경우.
Names Default To Here(1);
v1 = "";
v2 = "";
dt = Open("JMP_Question.xlsx", Worksheets("Sheet1"), invisible);
Summarize(dt, uniqvals = by(:Column 1));
aa_options = Associative Array();
For(i = 1, i <= N Items(uniqvals), i++,
col1_idx = dt << Get Rows Where(:Column 1 == uniqvals[i]);
col2_vals = dt[col1_idx, "Column 2"];
aa_options[uniqvals[i]] = col2_vals;
);
nw = New Window("Set the Value",
Lineup Box(N Col(2),
Text Box("Col1"),
cb1 = Combo Box(
uniqvals,
<<SET function=""></SET>
목록을 입력으로 사용하지 않습니다. 내가 뭔가 잘못하고 있습니까?
감사해요!
Re: 두 개의 관련 열을 기반으로 하는 GUI 콤보 상자JMP에서 목록을 텍스트 상자에 넣을 수 있도록 허용하더라도(확실하지 않은 이유는 오류가 발생한다고 생각합니다) 여전히 문자열이므로(JMP가 변환을 수행할 가능성이 높음) 인덱스로 직접 참조할 수 없습니다.
Words(대괄호와 같은 추가 문자를 제거하기 위해 Substitute)를 사용하여 목록으로 분할하거나 목록으로 Parse()할 수 있습니다.
Names Default To Here(1);
nw = new window("",
tb = Text Edit Box({"list1", "list2", "list3"}),
);
tb_txt = tb << get text;
show(tb_txt);
show(type(tb_txt));
show(Parse(tb << get text));
show(type(Parse(tb << get text)));Re: 두 개의 관련 열을 기반으로 하는 GUI 콤보 상자안녕 자모,
솔루션을 세 개의 열에 적용하려고 하면 작동합니다. 그러나 첫 번째 및 두 번째 열을 기반으로 고유한 선택 항목을 만들 수 없습니다.
Names Default To Here(1);
v1 = "";
v2 = "";
v3 = "";
dt = Open("JMP_Question.xlsx", Worksheets("Sheet1"), invisible);
Summarize(dt, uniqvals_1 = by(:Column 1));
Summarize(dt, uniqvals_2 = by(:Column 2));
Summarize(dt, uniqvals_3 = by(:Column 2,:Column 3));
aa_options = Associative Array();
For(i = 1, i <= N Items(uniqvals_1), i++,
col1_idx = dt << Get Rows Where(:Column 1 == uniqvals_1[i]);
col2_vals = dt[col1_idx, "Column 2"];
aa_options[uniqvals_1[i]] = col2_vals;
);
ab_options = Associative Array();
For(i = 1, i <= N Items(uniqvals_2), i++,
col2_idx = dt << Get Rows Where(:Column 2 == uniqvals_2[i]);
col3_vals = dt[col2_idx, "Column 3"];
ab_options[uniqvals_2[i]] = col3_vals;
);
/*
ac_options = Associative Array();
For(i = 1, i <= N Items(uniqvals_1), i++,
col1_idx = dt << Get Rows Where(:Column 1 == uniqvals_1[i]);
col2_vals = dt[col1_idx, "Column 2"];
For(j=1, j<=N Items(uniqvals_2),j++
col2_idx = dt << Get Rows Where(:Column 2 == uniqvals_2[j]);
col3_vals = dt[col2_idx, "Column 3"];
ac_options[uniqvals_2[j]] = col3_vals;
);
);
*/
print(ac_options);
nw = New Window("Set the Value",
Lineup Box(N Col(2),
Text Box("Col1"),
cb1 = Combo Box(uniqvals_1, << set function(function({this},
cb2_vals = aa_options[(this << get selected)];
cb2 << Set Items(cb2_vals);
)), << Set(1)
),
Text Box("Col2"),
cb2 = Combo Box(uniqvals_2, << set function(function({this},
cb3_vals = ab_options[(this << get selected)];
cb3 << Set Items(cb3_vals);
)), << Set(1)
),
Text Box("Col3"),
cb3 = Combo Box(ab_options[uniqvals_2[1]])
),
H List Box(
Button Box("OK",
v1 = cb1 << get selected;
v2 = cb2 << get selected;
v3 = cb3 << get selected;
nw << close window;
show(v1, v2, v3);
),
Button Box("Cancel", nw << close window)
)
);위의 코드가 작동합니다. 그런데 첨부된 이미지를 보면 Col2와 Col3에 대한 고유 목록을 생성할 수 없습니다.
내가 놓친 간단한 해결책이있을 것입니다.
감사해요!
Re: 두 개의 관련 열을 기반으로 하는 GUI 콤보 상자:Column 1과 :Column 2의 조합인 새 열을 생성하고 키에 사용할 수 있습니다.
두 개의 관련 열을 기반으로 하는 GUI 콤보 상자안녕하세요,
파일에 두 개의 열이 있는 경우 두 열을 개별적으로 사용하여 콤보 상자를 만들 수 있습니다(첨부된 JSL 파일 참조). 그러나 내가 정말로 원하는 것은 첫 번째 옵션(예: "a")을 선택하면 두 번째 상자 옵션이 "a1", "a2" 및 "a3"으로만 제한되어야 한다는 것입니다. 첨부된 엑셀 파일을 참조하세요.
도움을 주시면 감사하겠습니다.
v1 = "m";
v2 = "n";
dt = Open("JMP_Question.xlsx", Worksheets("Sheet1"), invisible);
subDt1 = dt << Subset(Columns(:Column 1), invisible);
Summarize(col1_unique_vals = by(Column 1));
subDt2 = dt << Subset(Columns(:Column 2), invisible);
Summarize(col2_unique_vals = by(Column 2));
win = New Window("Set the Value",
H List Box(Text Box("Col1"), combo_box1 = Combo Box(col1_unique_vals)),
H List Box(Text Box("Col2"), combo_box2 = Combo Box(col2_unique_vals)),
H List Box(
Button Box("OK",
v1 = combo_box1 << get selected;
v2 = combo_box2 << get selected;
win << close window;
),
//a cancel button that closes the window and doesn't store store the results
Button Box("Cancel", win << close window)
)
);
JMP 버전 - JMP Pro 14
자동화 및 스크립팅품질 및 프로세스 엔지니어링