AX / D365FO – Remove a Group By field on a QueryBuild – X++

I need to remove a group by statement from a QueybuildDataSource object. and didn’t find any method to do this (The opposite of addGroupByField).

Unfortunately, x++ does not have any method to remove one field from group by but by some tricks we can do that. I have written a method for removing group by field:

public void removeGroupByField(FieldID _fieldId, TableId _tableId, Query _query)
    {
        int i = 1;
        QueryGroupByField       qgbf;
        QueryBuildDataSource    qbdsOld, qbdsNew;
        Query                   newQuery;

        qbdsOld             = _query.dataSourceTable(_tableId);

        newQuery            = new Query(_query);    
        qbdsNew             = newQuery.dataSourceTable(_tableId);

        newQuery.clearGroupBy();

        for(i = 1 ; i<= _query.groupByFieldCount(); i++)
        {
            qgbf    = _query.groupByField(i, qbdsOld);
            
            if(qgbf.fieldID() != _fieldId)
            {
                qbdsNew.addGroupByField(qgbf.fieldID());
            }
        }

        _query  = newQuery;
    }

Leave a comment