2011-05-03 7 views
1

Dynamics AX 2009에서는 동일한 테이블의 다른 필드를 기반으로 계산되는 필드를 원합니다.필드를 다른 필드를 기반으로 계산할 수 있습니까?

표시 방법 등을 사용하는 것이 좋지만 실제로 값을 저장해야합니다 (이전 제품에서 사용했기 때문에 동적 계산이 무서워 경영이 빠름) . 우리가 FieldA이있는 경우

는, 계산 및 저장 FieldB :

은이 두 방식으로 작동 할, 케이크에 장식을 넣어합니다. FieldB가있는 경우 FieldA를 계산하고 저장하십시오. 둘 다 가지고 있거나 없으면 아무 것도하지 않습니다.

나를 도와 줄 수있는 Dynamics AX가 내장되어 있습니까?

답변

3

먼저, 예를 들어 재정의 테이블의 방법 insert()이 :

public void insert() 
{ 
    ; 

    this.FieldB = this.FieldA * 2; 

    super(); 
} 

그런 update() 오버라이드 (override)를, 예를 들면 :

public void update() 
{ 
    if (this.FieldA == this.orig().FieldA && this.FieldB != this.orig().FieldB) 
    { 
     this.FieldA = this.FieldB/2; 
    } 
    else 
    { 
     this.FieldB = this.FieldA * 2; 
    } 

    super(); 
} 

이는 예입니다, 방법을 재정의해야하는 자신의 판단을 사용하십시오.

public void modifiedField(fieldId _fieldId) 
{ 
    ; 

    super(_fieldId); 

    switch (_fieldId) 
    { 
     case fieldnum(MyTable, FieldA) : 
      this.FieldB = this.FieldA * 2; 
      break; 

     case fieldnum(MyTable, FieldB) : 
      this.FieldA = this.FieldB/2; 
      break; 
    } 

    if (this.isFormDataSource()) 
     this.dataSource().refresh(); 
} 

추신 : 마지막으로, 필드는 형태로 수동으로 수정하는 경우에만 사용됩니다 modifiedField()를 오버라이드 (override) doinsert(), doupdate() 또는 skipDataMethods()을 사용하는 경우 insert()update()이 호출되지 않습니다.

+0

modifiedField를 재정의해야합니까? 삽입, 업데이트 방법은 양식을 통한 사용자 편집을 다루지 않습니까? 또한 답변 해 주셔서 감사합니다. –

+1

'modifiedField()'가 무시되고 사용자가 FieldA를 변경하면 FieldB가 즉시 변경됩니다. 그렇지 않으면 레코드가 저장 될 때만 변경됩니다. 데이터 일관성에 중요하지 않으며 사용자의 편의를 위해서만 추가됩니다. – 10p

+0

@ 10p :'insert()'와'update()'가 호출 될 때? 좀 더 설명해 주시겠습니까? – piku

관련 문제