런타임에 변수 만들기여보세요,
런타임에 변수를 생성하는 방법이 있습니까 (응용 프로그램을 실행하기 전에 얼마나 많은 변수와 유형이 필요한지 모릅니다)?
내가 작업하고있는 솔루션 :
1. 사용자는 일부 jmp / Excel 데이터 테이블을 선택합니다.
2. 사용자는 테이블 필터링에 사용할 열을 선택합니다 (알 수없는 양 및 이름).
3. 응용 프로그램은 선택한 각 열에 대해 목록 상자 또는 라디오 상자를 만들고 해당 열의 고유 한 값으로 채 웁니다.
4. 사용자가 필터링 할 값을 선택하면 앱이 필터링을 실행하고 필터링 된 표를 반환합니다.
따라서 가능한 경우 각 목록 상자에 대해 런타임에 변수를 생성해야합니다.
고맙습니다,
남자 이름.
Re : 런타임에 변수 만들기JSL은 데이터 필터의 고유 한 버전을 만들 수있게 해 주므로 환경에 가장 적합한 것으로 생각되는 양식으로 JSL을 제공 할 수 있습니다. 나는 당신이 빌드해야 할 모든 예외 처리가 작업을 꽤 복잡하게 만들 것이라고 말할 것이다. 아래는 매우 조잡한 스크립트로, 사용자가 처리 할 테이블 내의 열과 테이블을 선택할 수있는 환경에서 변수를 만드는 예제를 제공합니다. 필자는 "Big Class"라는 샘플 데이터 테이블을 사용하기로했지만 모든 테이블이 코드와 함께 작동합니다. "nameList", "handleList"및 CNTList라는 목록은 선택된 열을 저장하고 목록 상자에 대한 포인터를 생성하고 마지막은 선택이 선택되었을 때 모든 정보를 폐기 할 수있는 번호입니다 생성 된 목록 상자 중 하나에서. 이제는 이것이 원하는 디스플레이를 만드는 데 사용할 수있는 방향 중 하나임을 분명히 알겠습니다. 다시 말하면 예외 코드가 많아 필터링 할 선택된 열을 제거하고, 숫자 필터를 처리하는 방법은 선택 항목이 "And"또는 "Or"로 비교됩니다. ... 처리해야하는 모든 항목.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
Current Data Table( dt );
CNT = 0;
// Create lists to handle processing
nameList = {};
handleList = {};
CNTList = {};
// Create the new window
nw = New Window( "Example",
V List Box(
Text Box( "Data Table Columns" ),
Spacer Box( size( 0, 10 ) ),
clb = Col List Box(
dt << get name,
all,
max selected( 1 ),
Sel = clb << get selected;
If( N Items( Sel ) > 0,
CNT++;
Insert Into( nameList, Sel[1] );
Eval( Parse( "summarize(dt,bygp=by(:" || Char( Sel[1] ) || "))" ) );
lb = List Box( bygp, Eval( Parse( "SelectionChoice=" || Char( CNT ) || ";" ) ) );
Insert Into( handleList, lb );
Insert Into( CNTList, CNT );
HLB << append( lb );
);
),
HLB = H List Box()
)
);Re : 런타임에 변수 만들기짐 고맙다.
데이터 필터 옵션을 사용하지 않고 목록 상자 및 라디오 박스를 사용하여 자체 GUI를 개발하고 싶습니다.
사용자는 필터링에 사용할 열을 제어 할 수 있습니다. "User Properties"jsl에서 열 이름을 관리하도록 할 것입니다.
예를 들어, desiredColumnsList = { "ColumnA", "ColumnD"} - 사용자가 수정할 것입니다.
그런 다음 선택한 각 열에 대해 필터링 용 목록 상자를 만듭니다.
그 방법에 대한 몇 가지 제안?
다시 한번 감사드립니다.
남자 이름.
Re : 런타임에 변수 만들기내장 된 "데이터 필터"를 사용하여 코드를 작성할 필요없이 원하는 것을 할 수 있습니다. 원하는 데이터 테이블을 연 다음 풀다운 메뉴로 이동하십시오.
행 ==> 데이터 필터
그런 다음 필터링 할 임의 또는 모든 열을 선택할 수 있습니다.
마지막으로, 필터가 선택되고 그 값이 선택되면 빨간색 삼각형으로 가서 "부분 집합 표시"를 선택하여 새로운 부분 집합 데이터 테이블을 생성 할 수 있습니다.
이 작업은 아래 코드를 사용하여 스크립팅 할 수도 있습니다.
Names Default To Here( 1 );
// Open the desired file
path=pick file();
dt=open(path);
// Get all of the columns in the data table
colList = dt << get column names();
// Build the code required to open a Data Filter
// That has all columns available for filtering
TheExpr =
"dt << Data Filter(
Location( {59, 59} ),
Auto clear( 0 ),
Mode( Show( 1 ), Include( 1 ) ),
Add Filter( columns(";
TheExpr = TheExpr || ":" || colList[1];
For( i = 2, i <= N Items( colList ), i++,
TheExpr = TheExpr || ", :" || colList[i]
);
TheExpr = TheExpr || ") ) );";
// Execute the code that was built
Eval( Parse( TheExpr ) );