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
。如果我是对的,那么这在技术上是不可能的,除非您使用宏定义每个可能的表,并让它在运行时切换(恶心)。