簡體   English   中英

如何在X ++中為morphx報表設置autosum屬性

[英]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報表在直接調用(在報表節點上運行)或通過報表菜單項調用時,行為會有所不同。

第一個的執行順序為:

  1. 在里面
  2. 對話

第二個通過類RunbaseReportStd按以下順序運行:

  1. 在里面
  2. 對話

這很重要,因為您在用戶進行任何更改更改了查詢。

因此,將代碼更改從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM