안녕하십니까,
현재 열려 있는 모든 테이블 이름을 표시하는 한 쌍의 목록 상자에서 2개의 데이터 테이블을 선택하라는 대화 상자 창을 스크립팅하려고 합니다.대화 창, 목록 상자 및 선택 프로세스는 모두 의도한 대로 작동하지만 2개의 선택된 테이블 이름을 변수로 사용하면 데이터 테이블 참조에 연결하려고 할 때 장애물에 부딪힙니다.데이터 테이블 참조는 나중에 코드에서 선택한 테이블에 대한 작업을 수행하는 데 필요합니다.
문제는 dt1에 대해 다음 오류와 함께 마지막 두 줄에서 발생합니다.
인수는 'Current Data Table' , Current Data Table/*###*/(SourceData)에 대한 액세스 또는 평가에서 데이터 테이블 참조를 포함해야 합니다.
SourceData와 TargetData는 각각 항목이 1개뿐인 목록 개체이므로 데이터 테이블 이름으로 연결하기 전에 문자열로 변환을 시도했지만 작동하지 않았습니다.
도움을 주시면 감사하겠습니다. 아래 스크립트 섹션을 참조하십시오.
오픈테이블 = {} ;
을 위한 ( 티 = 1 , 티 <= NT테이블 () , 티 ++, 에 집어 넣다 ( 오픈테이블 , 데이터 테이블 ( 티 ) << 이름 가져오기 )) ;
데이터 창 선택 = 새창 ( "데이터 테이블 선택" , << 모달 ,
소스 패널 = 패널 박스 ( "소스 데이터 테이블" ,
소스 목록 상자 = 리스트 박스 ( 오픈테이블 , 최대 선택 ( 1 ))) ,
대상 패널 = 패널 박스 ( "대상 데이터 테이블" ,
대상 목록 상자 = 리스트 박스 ( 오픈테이블 , 최대 선택 ( 1 ))) ,
라인업 박스 ( 엔콜 ( 2 ) , 버튼 박스 ( "확인" ,
소스 데이터 = 소스 목록 상자 << GetSelected ;
타겟데이터 = 대상 목록 상자 << GetSelected ) ,
버튼 박스 ( "취소" , 중지 () ))
) ;
dt1 = 현재 데이터 테이블 ( 소스 데이터 ) ;
dt2 = 현재 데이터 테이블 ( 타겟데이터 ) ;
이것은 완벽하게 작동했습니다.데이브 감사합니다!
먼저 기능을 사용하려는 데이터 테이블 마지막 두 줄의 현재 데이터 테이블이 아닙니다.
데이터 테이블에 대한 인수는 문자열 이름이어야 합니다. SourceData 및 TargetData의 내용을 표시하면 목록이 표시됩니다. 이는 일반적으로 목록 상자에서 사용자가 여러 항목을 선택할 수 있기 때문입니다. 따라서 선택한 항목의 수를 하나로 제한하더라도 선택 항목은 여전히 목록으로 반환됩니다.
마지막 두 줄을 다음과 같이 바꿀 수 있습니다.
dt1 = Data Table( SourceData[1] );
dt2 = Data Table( TargetData[1] );
이제 목록의 첫 번째 항목이 사용되고 있습니다.
이것은 물론 사용자가 각 목록에서 적어도 하나의 항목을 선택했다고 가정합니다. 모달 창에 유효성 검사를 추가할 수 있습니다. Modal 메시지가 포함된 줄 뒤에 다음을 추가합니다.
<<ONVALIDATE>0 & NItems(TargetData)>0,
isValid = 1
,
isValid = 0;
Beep()
);
isValid
),</ONVALIDATE>
분명히 이 유효성 검사를 확장할 수 있습니다(예: 소스 및 대상 이름이 동일하지 않은지 확인하기 위해).