X++:
private server static container ountPrim(container _queryPack)
{
Query countQuery;
QueryRun countQueryRun;
QueryBuildDataSource qbds;
QueryBuildFieldList qbfl;
Common common;
Integer counter;
Integer loops;
Integer tmxGroupNumber;
Integer tmxDataSourceNumber;
;
countQueryRun = new QueryRun(_queryPack);
countQuery = countQueryRun.query();
tmxGroupNumber = countQuery.groupByFieldCount(); //<-- this guarantees number of groupings
for (tmxDataSourceNumber = 1; tmxDataSourceNumber <= countQuery.dataSourceCount(); tmxDataSourceNumber++)
{
qbds = countQuery.dataSourceNo(tmxDataSourceNumber);
qbds.update(false);
//qbds.sortClear();
//tmxGroupNumber +=(qbds.orderMode()==orderMode::GroupBy);
qbfl = qbds.fields();
qbfl.dynamic(false);
qbfl.clearFieldList();
qbds.addSelectionField(fieldNum(Common,RecId),SelectionField::Count);
}
countQueryRun = new QueryRun(countQuery);
while (countQueryRun.next())
{
common = countQueryRun.getNo(1);
counter += common.RecId;
loops++;
}
//return [counter,loops];
return [counter,(tmxGroupNumber ? loops : counter)];
}