自定义查找和GROUP BY(Custom Lookup and Group By)

2019-09-19 10:14发布

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

让通过摆脱所有的复制为对一组,我想! 沿着线的东西:

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

现在到了奇怪的行为,我已经和我的问题的实际点。 在一个空场,由该组正确执行,我得到这个:

A
B
C

现在,让我们在查找中选择“A”,然后再次执行查找,因为我想点击“B”代替。 本集团现在不知什么原因被禁用,我也得到相同的查询结果作为第一个我收到了。

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

Answer 1:

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

您可以通过在SysTableLookup设置useLookupValues为false禁用此行为。 不幸的是,我不知道为什么AX做到这一点。 我怀疑它的变化OrderMode来排序依据。



Answer 2:

昨天我有同样的问题。

我想这个代码是“初始化”也许?

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

我不得不我“的GroupBy”代码(如上)加入executeQuery方法,监守以下行从我的查询除去groupBys(I检查此使用断点);

qbsSum.sortClear();

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



Answer 3:

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



文章来源: Custom Lookup and Group By