6

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

我想对表单中的字段进行自定义查找。该表CTable如下所示:

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

查找仅涉及Val使用 EDT 定义的列,该列具有基本关系: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 现在由于未知原因被禁用,我得到的查找结果与以前的第一个结果相同。

为什么会这样?我该如何克服呢?

4

3 回答 3

5

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

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

于 2013-08-14T09:45:36.370 回答
2

我昨天有同样的问题。

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

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

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

qbsSum.sortClear();

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

于 2012-07-12T14:55:12.617 回答
1

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

于 2015-08-05T12:27:25.737 回答