今回は、クエリビルダのフィルター検索において、データを階層表示する方法をご紹介します。
階層データセットの準備
あるテーブルにGroupというフィールドが存在し、そのデータが階層構造をもっているとします。例えば住所などがいい例かな。
例)東京都/世田谷区/豪徳寺...
そのようなデータをSELECT文等を使用して下記の形式のデータセットに加工します。Viewにしてもいいですし、新たなテーブルを作成してもいいです。

本来は、基データが動的データでしょうからViewがいいでしょうね。
Viewが完成したら、対象データモデルに新しいViewを定義し、Sharperlightエンジンがアクセスできるようにします。
フィルター属性への階層の設定
Sharperlightアプリケーションメニューからスタジオを起動し、対象データモデルを開きます。
次に、階層検索を設定するフィールド、つまりGroupフィールドのあるテーブル定義を参照します。

Groupフィールドは、オリジナルもそのまま保存しておきたいので、先ずクローンを作成します。
Groupフィールドを選択し、右クリックメニューからCopyを選択します。そして再度右クリックメニューからPasteを選択するとクローンフィールドが挿入されます。
クローンフィールドを選択し、右側の領域に属性一覧を表示し、更新を行います。
Code属性には、GroupHierarchyと入力。
Description属性には、Group Hierarchyと入力。

下方に移動して...、
Lookup属性で、オプションボタンをクリックしてLooup属性ダイアログを開きます。

Typeには、Hierarchyを選択します。
Select The Hierarchy Tableボタンで、先に準備した階層データセットを返すViewもしくはTableを指定します。

Selection領域にフィールド一覧が表示されます。その一覧から順序に注意しながらフィールドを右側に移動させます。
1番目のフィールドは、階層パスをもつフィールド、2番目は一意のIDやコード、3番目は、階層のレベルを表現するフィールド、その後は順に摘要フィールドを指定していきます。

OKボタンで保存します。

次に、Validation Method属性に移動します。オプションボタンをクリックしてValidation Method属性ダイアログを開きます。

MethodドロップダウンメニューからHierarchyを選択します。

OKボタンで保存します。

以上で完了。
検証
では早速検証してみましょう。
データモデルを保存します。

クエリビルダを実行します。(メインアプリケーションメニューからでもいいですよ
)

クエリビルダが起動しら、製品に対象データモデル、つまり今回変更を加えたデータモデルを選択します。
テーブルには、今回更新を加えたテーブルを選択します。
下部の選択領域に先ほど追加したGroup Hierarchyフィールドが拝見できます。
ドラッグ&ドロップでフィルター領域に設定しましょう。

フィルター領域に設定したGroup Hierarchyの検索ボタンをクリックします。

検索ウインドウが開き、先ほど設定した階層構造が拝見できます。

<ALL>を選択し閉じます。

下部の選択領域で右クリックメニューからすべてを出力を選択し、全フィールドを出力領域に設定します。

プレビューボタンでクエリを実行してみます。

全データが返ってきます。
クエリに戻るボタンでクエリ定義に戻ります。
今度は、Group Hierachyフィルターで特定の値を選択し、階層検索が正常に動作しているか確認します。
<ALL>のチェックをはずし、東北地方にチェックを入れます。すると上記テキストフィールドに階層パス\Japan\Tohoku\%が表示されます。

OKを押して確定します。

プレビューボタンでクエリを再度実行してみます。青森と八戸市のデータが表示されます。

Sharperlightエンジンで動的に作成されたSQL SELECT文は、このようになっています。
SELECT
J001.[ID]
,J001.[Group]
,J001.[Group]
,J001.[GroupDescription]
,J001.[Amount]
FROM
[dbo].[SampleJPTransaction] J001
WHERE
J001.[Group] IN (
SELECT J001.[UniqueID] FROM [dbo].[SampleJPHierarchy] J001
WHERE J001.[Path] LIKE N'\Japan\Tohoku\%'
)
ORDER BY
1,2,3
いかがでしたか?是非ためしてみてくださいね。