LoginSignup
0
0

More than 1 year has passed since last update.

【データモデル】階層検索ダイアログの設定

Last updated at Posted at 2022-08-05

今回は、クエリビルダのフィルター検索において、データを階層表示する方法をご紹介します。

階層データセットの準備

あるテーブルにGroupというフィールドが存在し、そのデータが階層構造をもっているとします。例えば住所などがいい例かな。
例)東京都/世田谷区/豪徳寺...
そのようなデータをSELECT文等を使用して下記の形式のデータセットに加工します。Viewにしてもいいですし、新たなテーブルを作成してもいいです。
image.png
本来は、基データが動的データでしょうからViewがいいでしょうね。
Viewが完成したら、対象データモデルに新しいViewを定義し、Sharperlightエンジンがアクセスできるようにします。

フィルター属性への階層の設定

Sharperlightアプリケーションメニューからスタジオを起動し、対象データモデルを開きます。
次に、階層検索を設定するフィールド、つまりGroupフィールドのあるテーブル定義を参照します。
image.png
Groupフィールドは、オリジナルもそのまま保存しておきたいので、先ずクローンを作成します。
Groupフィールドを選択し、右クリックメニューからCopyを選択します。そして再度右クリックメニューからPasteを選択するとクローンフィールドが挿入されます。
クローンフィールドを選択し、右側の領域に属性一覧を表示し、更新を行います。
Code属性には、GroupHierarchyと入力。
Description属性には、Group Hierarchyと入力。
image.png
下方に移動して...、
Lookup属性で、オプションボタンをクリックしてLooup属性ダイアログを開きます。
image.png
Typeには、Hierarchyを選択します。
Select The Hierarchy Tableボタンで、先に準備した階層データセットを返すViewもしくはTableを指定します。
image.png
Selection領域にフィールド一覧が表示されます。その一覧から順序に注意しながらフィールドを右側に移動させます。
1番目のフィールドは、階層パスをもつフィールド、2番目は一意のIDやコード、3番目は、階層のレベルを表現するフィールド、その後は順に摘要フィールドを指定していきます。
image.png
OKボタンで保存します。
image.png
次に、Validation Method属性に移動します。オプションボタンをクリックしてValidation Method属性ダイアログを開きます。
image.png
MethodドロップダウンメニューからHierarchyを選択します。
image.png
OKボタンで保存します。
image.png
以上で完了。

検証

では早速検証してみましょう。
データモデルを保存します。
image.png
クエリビルダを実行します。(メインアプリケーションメニューからでもいいですよ:thumbsup_tone2:
image.png
クエリビルダが起動しら、製品に対象データモデル、つまり今回変更を加えたデータモデルを選択します。
テーブルには、今回更新を加えたテーブルを選択します。
下部の選択領域に先ほど追加したGroup Hierarchyフィールドが拝見できます。
ドラッグ&ドロップでフィルター領域に設定しましょう。
image.png
フィルター領域に設定したGroup Hierarchyの検索ボタンをクリックします。
image.png
検索ウインドウが開き、先ほど設定した階層構造が拝見できます。
image.png
<ALL>を選択し閉じます。
image.png
下部の選択領域で右クリックメニューからすべてを出力を選択し、全フィールドを出力領域に設定します。
image.png
プレビューボタンでクエリを実行してみます。
image.png
全データが返ってきます。
クエリに戻るボタンでクエリ定義に戻ります。
今度は、Group Hierachyフィルターで特定の値を選択し、階層検索が正常に動作しているか確認します。
<ALL>のチェックをはずし、東北地方にチェックを入れます。すると上記テキストフィールドに階層パス\Japan\Tohoku\%が表示されます。
image.png
OKを押して確定します。
image.png
プレビューボタンでクエリを再度実行してみます。青森八戸市のデータが表示されます。
image.png
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

いかがでしたか?是非ためしてみてくださいね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0