[英]how to set autosum property in x++ for a morphx report
我在報告的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?
由於歷史原因,舊式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();
}
僅通過菜單項調用時,此方法才有效。 另外,當通過代碼添加時,我無法使用自動求和功能。
相反,您將必須使用報表查詢的“排序”節點來添加訂單和自動求和。
我不知道為什么,但這也許是因為您使用了自動設計,它是在運行時生成的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.