Axapta 限制用户为玩家添加5个以上的属性

Axapta 限制用户为玩家添加5个以上的属性,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,我有表格(字段:playerId,skill) 所以我的问题是:如何使用户不能添加超过5个相同的playerId? 表中要重写的方法以及要执行的操作? Tanks…您可以创建一个新的整数字段AttributeNum。根据需要,可以覆盖表上的insert()或initValue()。如果希望在此表上快速执行基于集合的操作,请选择initValue()而不是insert() 在重写的方法中,可以使用query来聚合和计算每个当前记录的属性数 编辑: 或者,您也可以覆盖表上的validateWri

我有表格(字段:playerId,skill)

所以我的问题是:如何使用户不能添加超过5个相同的playerId?

表中要重写的方法以及要执行的操作?


Tanks…

您可以创建一个新的整数字段AttributeNum。根据需要,可以覆盖表上的insert()或initValue()。如果希望在此表上快速执行基于集合的操作,请选择initValue()而不是insert()

在重写的方法中,可以使用query来聚合和计算每个当前记录的属性数

编辑:

或者,您也可以覆盖表上的
validateWrite()
方法

boolean validateWrite()
{
    TableA        tableA;
    boolean       ret = super();    
    #define.MaxAttributes(5) // consider using setup         
    if (ret && !this.RecId)
    {
        select count(RecId) from tableA where tableA.PlayerId == this.PlayerId;    
        if (tableA.RecId >= #MaxAttributes)
        {    
            ret = checkFailed("Error message goes here");
        }    
    }
    return ret;
}

你没有指定每个玩家的属性是否应该是唯一的,但是你也应该考虑创建合适的索引来执行数据完整性。 您可以在此处找到更多信息:


谢谢,但你能给我举个代码示例吗?因为我是SQL和AX方面的新手:)添加了代码。这只是一个想法,只有你能使它在你的需求的上下文中工作:)还要记住,我没有编译代码,所以请对此持保留态度。