Axapta 通过AOT中的查询生成订单

Axapta 通过AOT中的查询生成订单,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,我在AOT中进行了查询。我的目标是使用CustTable表的Group by“CustGroup”和Order by“count(RecId)”desc打印信息。group by可以正常工作,但order by不能正常工作。我不明白为什么 我的查询是这样的: 这是我使用的代码: Static void Query(Args _args) { QueryRun qr; CustTable myCustTable; ; qr = new QueryRun(queryStr(M

我在AOT中进行了查询。我的目标是使用CustTable表的Group by“CustGroup”和Order by“count(RecId)”desc打印信息。group by可以正常工作,但order by不能正常工作。我不明白为什么

我的查询是这样的:

这是我使用的代码:

Static void Query(Args _args)
{
   QueryRun  qr;
   CustTable myCustTable;
;
   qr = new QueryRun(queryStr(MyQuery));
while(qr.next())
{
  myCustTable = qr.get(tableNum(CustTable));
  info(strFmt("Group %1  Num %2", myCustTable.Custgroup, myCustTable.RecId));
}
}

结果是:


AX不按
计数(RecId)
排序,而是按分组排序


您可以通过将查询拖动到新视图,然后对视图的“计数”字段进行排序来解决问题。您也可以定义视图而无需查询。

您好,Jan,谢谢您的帮助。我有一个关于RecIds的问题。当我像我所希望的那样创建视图时,我注意到视图中的所有recid都是相同的“1010”。你能告诉我为什么它们不像表中那样是唯一的吗?如果你做了
计数(RecId)
(或其他聚合),它就会有那个值。在没有聚合的视图中,它将具有第一个表中的
RecId
值。否则它将具有任意非零值,如1010。唯一性不是问题,因为您无法通过
RecId
更新视图或合理选择聚合。