버그인가요 아니면 제가 뭔가 놓친 건가요?난수를 생성하고 테이블 변수를 기반으로 계산을 수행하는 데 사용되는 테이블(여기서는 단순화하여 "TestBug.jsl"이라고 부름)이 있습니다. 이를 "시뮬레이터 테이블"이라고 부르겠습니다. 이를 매번 다시 계산할 때마다 여러 번 반복하고 싶은 시뮬레이션이 하나 생기기 때문입니다.
그러면 다른 입력으로 동일한 시뮬레이션을 여러 번 자동으로 실행하고 결과 테이블을 "결과" 테이블로 연결하는 다음 스크립트가 있습니다.
테스트하려면 TestBug.jsl을 현재 데이터 테이블로 사용하여 스크립트를 실행하기만 하면 됩니다.
Names Default To Here(1);
VarList={1,2,3,4};
New Namespace(
"MyNS"
);
MyNS:Simulator = Current Data Table();
MyNS:FinalT=MyNS:Simulator<
<SUBSET></SUBSET>
<P>기본적으로 스크립트는 입력 목록과 "결과 테이블"에 연결된 결과 숫자에 따라 시뮬레이터 테이블의 테이블 변수를 반복하고 변경합니다(수식은 포함하지 않고 숫자만 포함).</P> <BR /> <P>따라서 스크립트가 처음에 하는 일은 "시뮬레이터"와 동일한 열을 갖는 빈 결과 테이블을 만든 다음 "시뮬레이터"의 테이블 변수를 반복적으로 변경하고 이를 "결과" 테이블에 연결하는 것입니다.</P> <BR /> <P>그러나 어떤 이유에서인지 "시뮬레이터" 변수의 값을 변경할 때마다 "결과" 테이블의 두 번째 반복에서 동일한 변수 이름을 가진 새 열이 생성되고 이상한 패턴으로 값이 채워집니다(그림 참조).</P> <BR /> <P>기본적으로 이전 반복에서 변수의 값을 새로 연결된 행의 활성 열에 추가하고, 마지막 반복의 값을 다른 모든 행에 추가합니다.</P> <P>이런 방식은 몇 번의 반복에서는 귀찮을 뿐이지만, 여러 번의 반복에서는 전체 프로세스를 매우 느리게 만들거나 충돌을 일으킵니다.</P> <P>"연결"이나 "테이블 변수 설정"을 건너뛰면 열이 추가되지 않습니다.</P> <P>내가 무엇을 잘못하고 있는지 이해할 수 없습니다.</P>
<LINGO-LABS id="lingo-labs-906674" slang="en-US" mode="CREATE">
<LINGO-LABEL>자동화 및 스크립팅</LINGO-LABEL>
</LINGO-LABS>
Re: 버그인가요 아니면 제가 뭔가 놓친 건가요?이러한 변수는 테이블 변수 때문에 추가됩니다. 예를 들어, 하위 집합 테이블을 생성한 후, 그리고 각 연결 후에 테이블 변수를 삭제할 수 있습니다.
더 보기...
Names Default To Here(1);
VarList = {1, 2, 3, 4};
New Namespace(
"MyNS"
);
MyNS:Simulator = Datatable("TestBug");
MyNS:FinalT = MyNS:Simulator << subset(
Output Table("final table"),
Copy formula(0),
All rows,
Selected columns only(0)
);
MyNS:FinalT << Select All Rows;
MyNS:FinalT << Delete Rows;
Try(MyNS:FinalT << Delete Table Variable("myvar"));
advancementWin = New Window("Progress", TBsizes = Text Box(), );
For(is = 1, is <= Length(VarList), is++,
myVarVal = VarList[is];
TBsizes << set text(
"Simulating:" || Char(myVarVal) || "(" || Char(is) || "/" || Char(Length(VarList)) ||
")"
);
MyNS:Simulator << Suppress Formula Eval(1); //i need this as in the final version i make more changes and i want to avoid recalc of the random each change
MyNS:Simulator << set table variable("myvar", myVarVal);
MyNS:Simulator << Suppress Formula Eval(0);
MyNS:Simulator << Rerun Formulas();
MyNS:FinalT << Concatenate(MyNS:Simulator, Append to first table);
Try(MyNS:FinalT << Delete Table Variable("myvar"));
);
advancementWin << Closewindow();
Re: 버그인가요 아니면 제가 뭔가 놓친 건가요?고맙습니다. 이것으로 문제가 해결되었습니다.
내가 올바르게 이해했다면
변수에 대해 서로 다른 값을 갖는 두 테이블을 연결하면 "원래 테이블에서 가졌던 값을 추적"하기 위해 새 열이 추가됩니다.
왜 그렇게 하고 싶어하는지 알겠지만 혼란스러울 정도로 이상한 행동이에요.
귀하의 트릭은 문제를 해결하지만 완전성을 위해 나는 옮겨야 했습니다.
Try(MyNS:FinalT << Delete Table Variable("myvar"));
연결하기 전에