问题
TLDR: Why group by clauses are disabled in lookups when the field using the lookup is not empty?
I want to do a custom lookup on a field in a form. The table CTable
looks like this:
Val Spec
------------
A alpha
A beta
A gamma
B delta
C epsilon
The look up only concerns the Val
column which is defined using an EDT with a basic relationship on it: Val == CTable.Val
The lookup obviously gives me a list like this:
A
A
A
B
C
Let's to a group by to get rid of all the duplicated As, I thought! Something along the lines of:
QueryBuildDataSource.orderMode(OrderMode::GroupBy);
QueryBuildDataSource.addGroupByField(fieldNum(CTable, Val));
Now comes the strange behaviour I have and the actual point of my question. On an empty field, the group by is correctly executed and I get this:
A
B
C
Now let's select "A" in the lookup, then perform the lookup again because I wanted to click on "B" instead. The group by is now disabled for unknown reasons and I get the same look up results as the first I had before.
Why is it so? How can I overcome that?
回答1:
Same question and usefull answer: http://dynamicsuser.net/forums/t/63438.aspx
You can disable this behavior by setting useLookupValues in SysTableLookup to false. Unfortunately I don't know exactly why AX does that. I suspect that it changes OrderMode to OrderBy.
回答2:
I had the same problem yesterday.
I guess this code is in "init" maybe?
QueryBuildDataSource.orderMode(OrderMode::GroupBy);
QueryBuildDataSource.addGroupByField(fieldNum(CTable, Val));
I had to add my "GroupBy" code (above) to the executeQuery method, becuase the following line was removing the groupBys from my query (I checked this using breakpoints);
qbsSum.sortClear();
If you use breakpoints I would expect your GroupBy options are being cleared before the query executes again.
回答3:
I had the same problem. This helped me:sysTableLookup.parmUseLookupValue(False);
来源:https://stackoverflow.com/questions/11453756/custom-lookup-and-group-by