我在报告的init()中有以下代码:
QueryBuildDataSource qbdsTable;
QueryOrderByField QueryOrderByFieldTransDate;
QueryOrderByField QueryOrderByFieldDimZone
QueryOrderByField QueryOrderByFieldDimCC;
;
super();
qbdsTable = query.dataSourceTable(tableNum(Table));
QueryOrderByFieldTransDate = qbdsTable.addOrderByField(fieldNum(Table, TransDate));
QueryOrderByFieldTransDate.autoSum(true);
QueryOrderByFieldDimZone = qbdsTable.addOrderByField(fieldNum(Table, DimZone),SortOrder::Descending);
QueryOrderByFieldDimZone.autoSum(true);
QueryOrderByFieldDimCC = qbdsTable.addOrderByField(fieldNum(Table, DimCostCenter));
QueryOrderByFieldDimCC.autoSum(true);
并且autosum属性正常运行(我已经为我用来计算这些小计的字段设置了SumAll属性。)
问题是,每当我尝试添加groupBy字段或选择字段时,autosum属性就不再受理(小计不再显示):
qbdsTable.addSelectionField(fieldNum(Table, AmountMST), selectionField::Sum);
或
qbdsTable.addGroupByField(fieldNum(Table, TransDate));
我试过用:
qbdsTable.addSortField(fieldNum(Table, TransDate));
qbdsTable.autoHeader(1, true);
但我有同样的问题
有没有人知道我如何在报告的相同数据上使用autosum和addGroupByField?
答案 0 :(得分:0)
由于历史原因,旧样式AX报告在直接调用(在报告节点上运行)或通过报告菜单项时的行为方式不同。
第一个的执行顺序是:
第二个按照以下顺序通过班级RunbaseReportStd
运行:
这很重要,因为您在用户进行了任何更改后更改了查询。
所以将代码更改从init移到fetch,如下所示:
public boolean fetch()
{
QueryBuildDataSource qbdsCustTrans = query.dataSourceTable(tableNum(CustTrans));
;
qbdsCustTrans.addSelectionField(fieldNum(CustTrans, AmountMST), selectionField::Sum);
qbdsCustTrans.addGroupByField(fieldNum(CustTrans, AccountNum));
qbdsCustTrans.addGroupByField(fieldNum(CustTrans, TransDate));
qbdsCustTrans.addGroupByField(fieldNum(CustTrans, CurrencyCode));
//info(qbdsCustTrans.toString());
return super();
}
只有通过菜单项调用时才能使用。 此外,当通过代码添加时,我无法使自动求和功能起作用。
相反,您必须使用报告查询的排序节点添加订单和autosum。
我不知道为什么,但也许这是因为您使用了在运行时生成的自动设计。