AX2012 使用SysComputedColumn来显示汇总字段而非使用display method

 

在窗体中使用display method来显示汇总信息比如:sum, count等信息的时候,窗体会非常的卡,体验非常不好。

一般这种情况要么拖拽加入数据源,要么使用SysComputedColumn(数据源是View的前提下)

 

SysComputedColumn

 

在视图【ReservationView】->【Methods】下新建一个method如下,来获取该预留Item的总申领量

 

public static server str totalPickedQtyStr()
{
    str expression;

    expression = 'select sum(Weight) from PickListLine where PickListLine.InventTransId = ' +

                  SysComputedColumn::returnField(tableStr(ReservationView),
                                                 identifierStr(InventJournalTrans),
                                                 fieldStr(InventJournalTrans, InventTransId));

    return expression;
}

 

在视图【ReservationView】-> 【Fields】下右键新建选择对应类型的Computed field,然后就可以作为数据源字段在窗体中使用拉,效果会比display method好太多。

 

在ViewMethod填入我们新建的方法就可

 

在实际使用过程中,要对totalPickedQty进行筛选,但是按照上面的写法,totalPickedQty是0的情况怎么样都无法筛选。所以需要将上面的方法修改为:

public static server str totalPickedQtyStr()
{
    str expression;

    expression = 'select Weight = (case when sum(Weight) > 0 then sum(Weight) else 0 end) from PickListLine where PickListLine.InventTransId = ' +

                  SysComputedColumn::returnField(tableStr(ReservationView),
                                                 identifierStr(InventJournalTrans),
                                                 fieldStr(InventJournalTrans, InventTransId));

    return expression;
}
posted @ 2021-02-17 12:07  一口一个小馒头  阅读(153)  评论(0编辑  收藏  举报