フィルター処理のオプション

この記事では、利用可能なフィルター処理オプションについて説明します。

概要

Microsoft Dynamics 365 財務と運用は、次のフィルタ処理オプションを提供します。

フィルター オプション Description
グリッド フィルタ ユーザーは、グリッド列ヘッダーの下の入力フィールドにフィルター条件を定義します。
選択フィルタ (フィールド フィルタ) ユーザーはフィールド値を選択し、その値をフィルター条件として使用します。
高度なフィルター ユーザーは、高度なフィルタリング オプション (フォームではなく列にフィルターを適用、追加のデータ ソースに参加、複数の列で並べ替えるなど) を含むダイアログ ボックスを開きます。

財務と運用は、次のフィルタ処理オプションを提供します。

フィルター オプション Description
フィルター ウィンドウ 左からスライドし、対象となるコンテンツに適用できる複数のフィルター基準を含むインライン ウィンドウです。
QuickFilter フレームワークによって指定されたフィルタリング機構が任意のリストまたはグリッドの上に表示されると、高速で単一列のフィルター処理を提供します。
グリッド列のフィルター処理 ユーザーは、フィルター条件を定義し、グリッド列ヘッダーから開くドロップ ダイアログを使用して、単一列ソートを実行できます。
高度なフィルターまたは並べ替え たいていの高度なフィルターのシナリオでは、移行された高度なフィルター ページを使用できます。

フィルター式

財務と運用アプリでのフィルター処理では、フィルター値が定義されている場合にクエリ記号を使用します (たとえば、"*" は 0 文字以上の文字に一致し、".." は一致する値の範囲を指定します)。 現在のバージョンでは、クエリ記号は選択された演算子によって暗黙的に指定され、ユーザー インターフェイスに挿入されません。 これにより、より直観的で簡単なフィルター処理がユーザーに提供されます。 特定のクエリ記号を使用して追加のフィルター条件を指定するユーザーに、またはより複雑な条件を入力する必要があるユーザーについては、各データ タイプに対して 一致演算子が提供されます。 その他のすべての演算子については、クエリ記号はリテラルとして解釈されます。 たとえば、フィルター条件「名が A と一致する」は、名が A の文字で始まるすべてのレコードを検出します。ただし、フィルター条件「名が A*である」は、名が文字どおり「A*」に等しいレコードを検出します。次のテーブルは、クライアントが財務と運用アプリのフィルター演算子と Dynamics AX 2012 クエリ構文の間でどのように変換するかを示しています。

フィルター演算子 財務と運用アプリのクエリ構文
完全に「円」であるか、「円」と等しい “circle”
「円」ではない、または「円」と等しくない “!circle”
「円」、「四角」、「サークルスクエア」のいずれか “circle,square,circlesquare”
「円」が含まれています。 “*円*”
「サークル」は含まない “!*円*”
「サークル」で始まる “円*”
「円」 の後に/「円」 より大きい “>circle”
「円」以上 “circle..”
「サークル」の前 / 「サークル」より小さい “<circle”
「円」以下 “..circle”
「四角」と「円」の間 “square..circle”

先行するテンプレートと一致しないクエリ構文は、一致演算子として解釈されます。

その他の頻繁なフィルタ式

ユーザーが列の空白値をフィルタ処理する場合があります。 特にこのためのフィルター演算子はありませんが、このフィルター処理を実行するための構文は同じです。 一致する演算子やと等しい演算子のいずれにおいても、ユーザーは、"" と入力して現在の列に対して空白値の行を取得することができます。 たとえば、名前が "" と入力すると、名前が空白のレコードを検索します。 "" は、列の値が空の文字列である行にのみ一致し、列の値が NULL または 0 である行には一致しないことに注意してください。

ユーザーが、特定の値のリストに属さないレコードをフィルター処理することもできます。 「1 つではない」はフィルター演算子ではありませんが、このフィルター式は、一致演算子を使用して、リスト内の各リスト項目を否定することで達成できます。 たとえば、!circle, !square は、「円」でも「四角」でもないすべてのレコードを検索します。

フィルター ウィンドウ

フィルター ウィンドウは、完全なページ一覧をフィルター処理する使いやすいインターフェイスを提供します。 フィルター ウィンドウは、フィルター処理するデータがユーザーに表示されるように、画面の左側からスライド インし、ページのコンテンツを右側にプッシュするインライン ウィンドウです。 ユーザーは、ページの左側にあるシステム定義の フィルターの表示 ボタンをクリックして、このフィルター メカニズムを開きます。 開いた後、ユーザーが新しいページに移動するまで、またはフィルターの非表示を使用してユーザーがフィルター ウィンドウを閉じるまで、フィルター ウィンドウは表示されたままになります。

フィルター ウィンドウはいつ使用可能になりますか ?

現在、フィルター ウィンドウは、次のページを除くすべてのページで使用できます。

  • ドロップ ダイアログ
  • ダイアログ
  • 拡張プレビュー
  • ルックアップ
  • ページ パーツ
  • パーツ
  • 目次ページ タイプ
  • データ ソースがないページ

どのようなデータにフィルター ウィンドウは有効ですか?

フィルター ウィンドウはページ リスト全体を対象とし、ページ上の最初のマスター データ ソースに (内部/外部結合によって) 直接結合されているテーブルとフィールドでのみ動作します。 このフィルター処理メカニズムは、セカンダリ コレクションのフィルター処理、または他のルート データ ソースとその直接結合されたデータ ソースのフィルター処理を目的としたものではありません。 その他のフィルター処理メカニズム (クイック フィルター、グリッド列のフィルター処理など) は、これら他の要件を満たすために使用できます。

どのようなフィールドがフィルター ウィンドウに最初に表示されますか?

フィルター ウィンドウに最初に表示されるフィールドが選択される方法を次に示します。

  1. 現在クエリ上に存在するすべての範囲/フィルター (非表示でないフィルター/範囲のみが表示されます) で使用されます。
  2. 範囲フィルターがクエリに現在存在しない場合、1 つ目のマスター データ ソースからのプライマリ インデックスのフィールドが使用されます。
  3. 1 つ目のマスタ データ ソースからのプライマリ インデックスのフィールドがない場合は、1 つ目のマスタ データ ソースで直接定義されている TitleFields が使用されます。 TitleFields が定義されていない場合は、既定のフィールドは表示されません。 (現在、最初のマスター データ ソースが別のテーブル (たとえばテーブル B) を拡張している場合、テーブル B の TitleField は表示されません。)

フィルター ウィンドウに表示される既定のフィールドを制御できますか?

開発者は、そのフィールドの空のフィルターをクエリに追加することで、特定のフィールドがフィルター ウィンドウに表示されるようにすることができます。 例については、フォーム init() にフィルター転記 super() を追加する FmCustomer ページを参照してください。 空のフィールドがフィルター ウィンドウに表示されることを保証するために追加された後、フィルター ウィンドウのフィールドは常にクエリで明示的なものになり、TitleFields や最初のマスター データ ソースのプライマリ インデックスからのフィールドになりません。

ユーザーは特定のフィールドのフィルター処理または既存のフィルターを変更できません。 これをどのように完了しますか。

開発者は、フィルタのステータスを変更することで、ユーザーが特定のフィールドでフィルタを変更/追加できるかどうかに影響を与える可能性があります。 使用可能な値は、次の RangeStatus 列挙型です。

  1. 開く (既定) – ユーザーはこのフィルターを表示および変更できます。
  2. ロック済 – ユーザーはフィルター値を表示できますが、変更することはできません。 ユーザーはこの列に別のフィルターを追加することもできません。
  3. 非表示 – ユーザーは、この列にフィルターがあることを確認できません。 ユーザーはこの列に別のフィルターを追加することもできません。

フィルター ウィンドウのフィルター フィールド リストの追加に表示されるフィールドを制御できますか?

フィルター フィールドの追加 リストに表示されるフィールドは、ページの最初のマスター データ ソースを含むクエリのフィルター設定可能なすべてのフィールドです。 したがって、開発者はこのリストに表示されるフィールドを制御することはできません。 予期しないフィールドが表示される場合、またはフィルターを適用するフィールドが見つからない場合、予定しているフィールドは異なるマスター データ ソース (最初のデータ ソースではない) 上にあるか、または子コレクション上のいずれかにあります。

フィルター ウィンドウはどのように使用しますか?

フィルター ウィンドウは、単純で簡単に使用できます。 最初に、各フィルター フィールドに関連付けられているリストで、フィルター演算子を選択します。 表示される演算子のセットは、フィールドのデータ型によって異なります。 フィルター条件に適切な値を入力して 適用 をクリックします。 ページは、指定したフィルター基準に基づいて更新されます。

QuickFilter

Dynamics 365 財務と運用アプリでは、QuickFilter はシステム内で任意のグリッドに関連付けることができるモデル化されたコントロールです。 ユーザーが入力を開始すると、列セレクター ドロップダウンが表示され、フィルターが適用される列に向かってユーザーがガイドされます。 開発者は QuickFilter の既定の列も指定できます。 開発者によって列が指定されていない場合は、グリッドにフィルター処理される最初のフィールドが既定の列です。 QuickFilter コントロール。

自分の QuickFilter 内に列セレクターがないのはなぜですか。

列セレクターは、グリッドに接続されている QuickFilter にのみ表示されます。 列の選択が表示されていない場合は、ほとんどの場合は、QuickFilter の TargetControl プロパティは空白になります。 このプロパティは、操作対象のグリッドを指している必要があります。 TargetControl プロパティが正しく設定されていますが、列のセレクターが表示されていない場合、グリッドにフィルター処理可能な列がない可能性があります。 テキスト以外のコントロール (イメージなど) に加えて、データ メソッドにバインドされているコントロールはフィルター処理できません。

QuickFilter を使用して他のコレクション コントロール (ツリーなど) をフィルターできますか?

はい、QuickFilter を使用して他のコレクション コントロールをフィルター処理することができますが、フィルター処理を手動で接続する必要があります。 一般的な手順を次に示します。

  • TargetControl プロパティを空白のままにします。
  • QuickFilter で applyFilter() メソッドをオーバーライドします。
  • 目的のフィルター処理を実行するためメソッド内にコードを記述します。

グリッド列のヘッダーのフィルター処理/並べ替え

財務と運用アプリでは、グリッド フィルター エクスペリエンスは Microsoft Excel でのエクスペリエンスにより近く調整されています。 ユーザーが列ヘッダーをクリックし、ドロップ ダイアログが表示されると、ユーザーはそのダイアログを使用して列をフィルター処理できます。 ここでのフィルタリング経験は、フィルター ウィンドウでのフィルタリング経験を模倣します。 また、現在選択されている列に基づくグリッドをソートするオプションがあります。

メモ

グリッド内の一部の列はフィルター処理できない場合があります。 そのような場合、列ヘッダーはクリックできません。 技術的な視点から、SQL テーブル内のフィールドに対応する列についてのみ、フィルター処理または並べ替えを実行できます。 コードにを介して値が計算される列は、グリッド列ヘッダー、フィルター ウィンドウ、QuickFilter、高度なフィルター、または並べ替えを使用してフィルター処理または並べ替えを行うことはできません。

グリッド フィルター処理の例。