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现在已被禁用,原因不明,我得到的结果与之前的结果相同。
为什么会这样?我怎么能克服这个?
答案 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);