如何在表记录中的FromDate之后保留ToDate?

时间:2015-04-10 15:13:34

标签: date axapta dynamics-ax-2012-r2

我有一个包含两个字段的表:FromDateToDate。我想确保ToDate值始终晚于FromDate值。

为此,我想将ToDate值设置为FromDate值+ 1.为此,我在表的validateField方法中实现了以下代码:

boolean ret;

ret = super(_fieldIdToCheck);

if (ret)
{
    switch (_fieldIdToCheck)
    {
        case fieldNum(MyTable, FromDate):
            this.ToDate = this.FromDate + 1;
    }
}

return ret;

此实现效果很好,但ToDate的值可以更改为FromDate之前的值。如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

正如Alex所说,使用表方法modifiedField进行字段相关的修改。

如果您按代码更改字段,请记住自己调用该方法。

也许您应该使分配有条件以避免覆盖用户输入的日期。如果ToDate最初为空,这也可以正常工作。

public void modifiedField(FieldId _fieldId)
{
    super(_fieldId);
    switch(_fieldId)
    {
        case fieldNum(MyTable, FromDate): 
        case fieldNum(MyTable, ToDate): 
            if (this.ToDate < this.FromDate) // mostly first time
                this.ToDate = this.FromDate + 1;
            break; // don't forget the break
    }
}