2012-07-12 85 views
6

TLDR:爲什麼在查找中使用查找的字段不爲空時,爲分組by子句禁用?自定義查找和分組按

我想對窗體中的字段執行自定義查找。表CTable看起來是這樣的:

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

的查找僅涉及其中使用EDT上有一個基本關係所規定的Val柱:Val == CTable.Val

查找顯然給了我一個名單如下:

A 
A 
A 
B 
C 

讓我們來一起擺脫所有重複的作爲,我想! 東西沿着線:

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

現在到了奇怪的行爲,我已經和我的問題的實際點。在一個空場,由該組正確執行,我得到這個:

A 
B 
C 

現在,讓我們在查找中選擇「A」,然後再次執行查找因爲我想點擊「B」代替。由於未知的原因,該組現在被禁用,並且獲得與之前的第一次相同的查找結果。

這是爲什麼?我如何克服這一點?

回答

5

同樣的問題,答案有用: http://dynamicsuser.net/forums/t/63438.aspx

您可以通過在SysTableLookup設置useLookupValues爲false禁用此行爲。不幸的是,我不知道AX爲什麼這麼做。我懷疑它將OrderMode更改爲OrderBy。

+3

請注意,[只有鏈接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓勵,所以答案應該是搜索解決方案的終點(vs.而另一個引用的中途停留時間往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra 2013-08-14 09:50:53

2

昨天我有同樣的問題。

我猜這個代碼是在「init」也許?

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

我不得不我「的GroupBy」代碼(如上)加入executeQuery方法,監守以下行從我的查詢除去groupBys(I檢查此使用斷點);

qbsSum.sortClear(); 

如果您使用斷點,我希望您的GroupBy選項在查詢再次執行之前被清除。

+0

不,它不在init中。它在表格級別的方法中執行查找。該方法採用一個表單stringControl作爲參數,使用SysTableLookup對象來執行基於本地查詢對象的查找。這個本地查詢對象上有Group By Clause。沒有可見的「executeQuery」方法,但在方法的末尾有一個「performLookup」。 – Max 2012-07-12 15:07:52

+0

如果一次運行直到查詢再次運行 - 在查詢運行之前(即,當您單擊B時)再次通過代碼將該組添加到QueryBuildDataSource,我會希望遇到同樣的問題。 – AnthonyBlake 2012-07-12 15:11:02

1

我有同樣的問題。這對我有幫助:
sysTableLookup.parmUseLookupValue(False);