自定义查找和分组依据

时间:2012-07-12 14:12:34

标签: axapta dynamics-ax-2009 x++

TLDR:当使用查找的字段不为空时,为什么在查找中禁用group by子句?

我想对表单中的字段进行自定义查找。表CTable看起来像这样:

Val Spec
------------
A   alpha
A   beta
A   gamma
B   delta
C   epsilon

查找仅涉及使用具有基本关系的EDT定义的Val列:Val == CTable.Val

查找显然给了我一个这样的列表:

A
A
A
B
C

让我们分组来摆脱所有重复的As,我想! 有点像:

QueryBuildDataSource.orderMode(OrderMode::GroupBy);
QueryBuildDataSource.addGroupByField(fieldNum(CTable, Val));

现在出现了我的奇怪行为以及我的问题的实际观点。在一个空字段上,group by被正确执行,我得到了这个:

A
B
C

现在让我们在查找中选择“A”,然后再次执行 ,因为我想点击“B”。 group by现在已被禁用,原因不明,我得到的结果与之前的结果相同。

为什么会这样?我怎么能克服这个?

3 个答案:

答案 0 :(得分:5)

同样的问题和有用的答案: http://dynamicsuser.net/forums/t/63438.aspx

  

您可以通过将SysTableLookup中的useLookupValues设置为false来禁用此行为。不幸的是,我不知道为什么AX会这样做。我怀疑它将OrderMode更改为OrderBy。

答案 1 :(得分:2)

昨天我遇到了同样的问题。

我猜这段代码可能在“init”中吗?

QueryBuildDataSource.orderMode(OrderMode::GroupBy);
QueryBuildDataSource.addGroupByField(fieldNum(CTable, Val));

我必须将我的“GroupBy”代码(上面)添加到executeQuery方法中,因为以下行是从我的查询中删除groupBys(我使用断点检查了这一点);

qbsSum.sortClear();

如果您使用断点,我希望在再次执行查询之前清除您的GroupBy选项。

答案 2 :(得分:1)

我遇到了同样的问题。这对我有所帮助:
sysTableLookup.parmUseLookupValue(False);