【クエリビルダ】カスタムフィールドを定義してみる


ご存知のとおり Sharperlightは、独自のデータモデル階層を使用してデータソースと会話をしています。データモデル作成時には、対象となるデータソース(データベース)のテーブルおよびフィールド情報がデータモデルに取り込まれます。
しかしながらレポート等の作成上、フィールドの追加が必要になることが多々あります。
そのような場合、Sharperlightには、カスタムフィールドというものが存在します。
この記事では、製品テーブル製品コード製品名を結合した値を返すカスタムフィールドを作成します。
Sharperlightの拡張表現を使用してこれら二つのフィールドの値を結合することは、下図で示すように可能です。
しかし、複数のレポートを作成するにおいて、その複数のレポート全てでこのような結合値を使用するといった場合、各レポート作成時に毎回この拡張表現を繰り返し定義する手間が発生します。また変更が発生した場合、全てのレポートの変更が必要となります。このような場合、カスタムフィールドを一つ作成しておくと、そういった手間が発生しないことになります。

では早速見ていきましょう。先ずはクエリビルダを起動します。
カスタムフィールドを定義する対象となる製品とテーブルを選択します。

ここで、カスタムフィールドの作成に入る前に、ある情報を収集しておきましょう。カスタムフィールドの定義時には、対象データベース内のフィールドの実名が必要となります。下図のように、右クリックメニューから[情報]を選択し、結合する二つのフィールドの実名を確認しておきます。

[情報]ダイアログでは[技術的詳細]タブへ移動します。

フィールドの実名の確認が済んだら、選択領域の右クリックメニューから[カスタマイズ] -> [フィールドを追加]を選択します。

[カスタムフィールド編集]ダイアログでは、下図のように四つのプロパティに値を定義します。

Description: クエリビルダの選択領域に表示される名称を記述します。
Data Type: 今回はStringですね。
SQL Column:
ここで二つのフィールド値の結合を行います。ここでの構文はそのままSELECT文に使用されるので、対象となるデータベースエンジンに準じた構文を記述します。今回はMicrosoft SQLなので、

CONCAT({_Table.Alias}.[製品コード],' - ',{_Table.Alias}.[製品名])

となります。{_Table.Alias}は実行時にSharperlightエンジンによって解決されるコントロールタグです。
SQL Data Type: Charを指定します。
上記四つのプロパティを記述し終えたら、[ok]ボタンで保存しましょう。
クエリビルダの選択領域に作成したカスタムフィールドが青字で表示されます。

出力領域にドラッグ&ドロップします。

[プレビュー]ボタンで動作確認をします。

生成および実行されたSQL文も確認してみます。

以上がカスタムフィールドの定義および使用の簡単な説明です。
Sharperlight