Axapta AX 2012 Group by与通用表

Axapta AX 2012 Group by与通用表,axapta,x++,dynamics-ax-2012,dynamics-ax-2012-r3,Axapta,X++,Dynamics Ax 2012,Dynamics Ax 2012 R3,如何按具有特定字段的公用表分组 我在(dt.fieldname2Id('BatchNo'))上遇到语法错误。 这是我的密码: Common common; SysDictTable dt; dt = SysDictTable::newName('Table1'); common = dt.makeRecord(); while select count(RecId) from common group by common.(dt

如何按具有特定字段的公用表分组

我在
(dt.fieldname2Id('BatchNo'))上遇到语法错误。

这是我的密码:

Common          common;
SysDictTable    dt;

dt        =    SysDictTable::newName('Table1');
common    =    dt.makeRecord();

while select count(RecId) from common
    group by common.(dt.fieldname2Id('BatchNo'))  //syntax Error here
    where common.(dt.fieldname2Id('flag'))==1
{
    info(int642str(Common.Recid));
}

您可以使用
查询

Common                  common;
SysDictTable            dt;
Query                   query = new Query();
QueryBuildDataSource    qbds; 
QueryRun                queryRun;

dt     = SysDictTable::newName('SalesTable');
common = dt.makeRecord();

qbds = query.addDataSource(common.TableId);
qbds.addGroupByField(dt.fieldname2Id('CustAccount'));

queryRun = new QueryRun(query);

while (queryRun.next())
{
    ...
}

您可以使用
查询

Common                  common;
SysDictTable            dt;
Query                   query = new Query();
QueryBuildDataSource    qbds; 
QueryRun                queryRun;

dt     = SysDictTable::newName('SalesTable');
common = dt.makeRecord();

qbds = query.addDataSource(common.TableId);
qbds.addGroupByField(dt.fieldname2Id('CustAccount'));

queryRun = new QueryRun(query);

while (queryRun.next())
{
    ...
}

您不能使用此方法进行分组。你必须按照下面的建议去做。@AlexKwitny是的,谢谢,这很有效。我一直在用Common做各种各样的尝试,试图把它当作一个普通的缓冲表对象来对待,因为我找不到任何关于Common和其他泛型类型的好文档。如果您知道,请分享。Common非常有用,但我认为真正的问题是编译器解析
select
语句和确定
groupby
字段的能力受到限制。我认为它通常只需要字段名,而不需要
Table.field
。如果我是对的,那么从技术上讲这是不可能的,除非你使用宏来定义每一个可能的表,并让它在运行时切换(恶心)。你不能用这种方法进行分组。你必须按照下面的建议去做。@AlexKwitny是的,谢谢,这很有效。我一直在用Common做各种各样的尝试,试图把它当作一个普通的缓冲表对象来对待,因为我找不到任何关于Common和其他泛型类型的好文档。如果您知道,请分享。Common非常有用,但我认为真正的问题是编译器解析
select
语句和确定
groupby
字段的能力受到限制。我认为它通常只需要字段名,而不需要
Table.field
。如果我是对的,那么这在技术上是不可能的,除非您使用宏定义每个可能的表,并让它在运行时切换(恶心)。