
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