2017-01-03 3 views
0

두 개의 그리드가있는 양식이 있습니다. 각 그리드에는 자체 데이터 소스가 있습니다. 자세한 내용은 첨부 된 그림을 참조하십시오.AX2012 - 생성시 새 기본 테이블 필드 값 가져 오기

첫 번째 모눈에서 선택한 선 i에 따라 두 번째 모눈의 내용이 변경됩니다.

내 문제 : 첫 번째 표에서 새 행을 만들면 도끼가 새로운 "조합 ID"(주 필드, INT)를주지 않기 때문에 두 번째 표에 값을 입력 할 수 없습니다

enter image description here

어떻게 해결할 수 있습니까?

+0

첫 번째 그리드에서 조합 ID를 어떻게 채우고 있습니까? 숫자 순서인가요? 어떤 경우에도 첫 번째 그리드 테이블의 수퍼 삽입 방법 후 첫 번째 그리드 테이블과 같이 조합 ID를 사용하여 두 번째 그리드 테이블에 새 레코드를 삽입하십시오. –

답변

1

상단 모눈이 머리글이고 아래쪽이 "선"인 부모 - 자식 양식처럼 보입니다.

CombinationID이 기본 키인 경우 숫자 시퀀스 또는 고유 한 방식으로 생성해야합니다.

양식에서 데이터 소스 MDISSearchDimensionsJoinSourceMDISAccountSearchTerms으로 설정해야합니다. 그것은 테이블 릴레이션을 사용할 것이지만, 그것들이 조인되었다고 지정해야합니다.

그런 다음 CombinationID이 헤더에서 설정되면 줄만 입력하면됩니다. 테이블 MDISSearchDimensionsinitFromMDISAccountSearchTerms(MDISAccountSearchTerms _MDISAccountSearchTerms)이라는 메서드를 추가하고 CombinationID을 설정하고이 메서드를 MDISSearchDimensions.initValue() 안에 호출합니다.

+0

답변 해 주셔서 감사합니다! CombinationID에 대한 숫자 시퀀스를 만듭니다. 다음 단계를 사용합니다. https://community.dynamics.com/gp/b/dynamics101trainingcentergp/archive/2014/09/24/creating-custom-number-sequences-in-microsoft-dynamics-ax-2012 – JamesnxD

+0

새 줄을 보면 시스템에 "CS01-00001이 저장되거나 삭제되지 않았기 때문에 새 번호를 할당 할 수 없습니다."라는 메시지가 표시됩니다. 내가 폼을 열거 나 닫을 때 Ctrl + S를 누르면 잘 동작합니다. 행을 자동 저장하는 방법이 있습니까? – JamesnxD

+0

시도해보십시오 https://dynamicsuser.net/ax/f/developers/84652/solution-to-solve-number-sequence-problem-for-the-error-a-new-number-cannot-be-assigned-가 있습니다. -has-been-been-saved-or-deleted –

0

두 번째 데이터 소스의 InsertIfEmpty 속성을 비활성화해야합니다.

번째 소스의 initValue 방법은 마스터 CombinationId 소스 값에 CombinationId 필드 (단, 적절한 관계)를 초기화하고, 그러나 현재는 마스터 데이터 소스 필드 값을 가지고 있으므로 이전한다.

남겨두고 싶은 경우 다른 옵션이 있습니다. 두 번째 데이터 소스의 validateWrite에서 수동으로 설정합니다

public boolean validateWrite() 
{; 
    MDISAccountDimension.CombinationId = MDISAccountSearchTerms.CombinationId; 
    return super(); 
} 

따라서 더 이상 인해 Mandatory이 설정되는 실패하지 않습니다.

사용자 오류가 발생하지 않도록 두 번째 눈금에 CombinationId을 숨겨야합니다.