6

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

重複したすべてのAsを取り除くために、グループに参加しましょう。次のようなもの:

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

今、私が持っている奇妙な行動と私の質問の実際のポイントが来ます。空のフィールドでは、group byが正しく実行され、次のようになります。

A
B
C

次に、ルックアップで「A」を選択してから、代わりに「B」をクリックしたかったので、ルックアップを再度実行します。不明な理由でgroupbyが無効になり、以前と同じルックアップ結果が得られます。

なんでそうなの?どうすればそれを克服できますか?

4

3 に答える 3

5

同じ質問と有用な答え: http ://dynamicsuser.net/forums/t/63438.aspx

SysTableLookupのuseLookupValuesをfalseに設定することで、この動作を無効にできます。残念ながら、なぜAXがそうするのか正確にはわかりません。OrderModeがOrderByに変わるのではないかと思います。

于 2013-08-14T09:45:36.370 に答える
2

私は昨日同じ問題を抱えていました。

このコードは多分「init」にあると思いますか?

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

次の行がクエリからgroupBysを削除していたため、executeQueryメソッドに「GroupBy」コード(上記)を追加する必要がありました(ブレークポイントを使用してこれを確認しました)。

qbsSum.sortClear();

ブレークポイントを使用する場合、クエリが再度実行される前にGroupByオプションがクリアされていると思います。

于 2012-07-12T14:55:12.617 に答える
1

私も同じ問題を抱えていました。これは私を助けました:
sysTableLookup.parmUseLookupValue(False);

于 2015-08-05T12:27:25.737 に答える