TLDR: Perché le clausole group by sono disabilitate nelle ricerche quando il campo che utilizza la ricerca non è vuoto?Ricerca personalizzata e gruppo per
Desidero eseguire una ricerca personalizzata su un campo in un modulo. La tabella CTable
assomiglia a questo:
Val Spec
------------
A alpha
A beta
A gamma
B delta
C epsilon
L'cercare riguarda solo la colonna Val
che è definita utilizzando un EDT con una relazione di base su di esso: Val == CTable.Val
La ricerca mi dà ovviamente una lista come questa:
A
A
A
B
C
Andiamo a un gruppo per eliminare tutti i duplicati Come, ho pensato! Qualcosa sulla falsariga di:
QueryBuildDataSource.orderMode(OrderMode::GroupBy);
QueryBuildDataSource.addGroupByField(fieldNum(CTable, Val));
Ora arriva lo strano comportamento che ho e il punto reale della mia domanda. Su un campo vuoto, il gruppo da sia correttamente eseguito e ottengo questo:
A
B
C
Ora selezioniamo "A" nella ricerca, quindi eseguire la ricerca nuovo perché volevo cliccare su "B" invece . Il gruppo di è ora disabilitato per ragioni sconosciute e ottengo gli stessi risultati di ricerca come il primo che avevo prima.
Perché è così? Come posso superarlo?
Nota che [risposte solo per collegamento] (http://meta.stackoverflow.com/tags/link-only-answers/info) sono scoraggiate, pertanto le risposte devono essere il punto finale di una ricerca di una soluzione (vs. ancora un altro scalo di riferimenti, che tendono a diventare stantii nel tempo). Si prega di considerare l'aggiunta di una sinossi autonoma qui, mantenendo il collegamento come riferimento. – kleopatra