我有一个包含两个字段的表:FromDate
和ToDate
。我想确保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
之前的值。如何防止这种情况?
答案 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
}
}