0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

ご存知のとおり Sharperlightは、独自のデータモデル階層を使用してデータソースと会話をしています。データモデル作成時には、対象となるデータソース(データベース)のテーブルおよびフィールド情報がデータモデルに取り込まれます。
しかしながらレポート等の作成上、フィールドの追加が必要になることが多々あります。
そのような場合、Sharperlightには、カスタムフィールドというものが存在します。
この記事では、製品テーブル製品コード製品名を結合した値を返すカスタムフィールドを作成します。
Sharperlightの拡張表現を使用してこれら二つのフィールドの値を結合することは、下図で示すように可能です。
しかし、複数のレポートを作成するにおいて、その複数のレポート全てでこのような結合値を使用するといった場合、各レポート作成時に毎回この拡張表現を繰り返し定義する手間が発生します。また変更が発生した場合、全てのレポートの変更が必要となります。このような場合、カスタムフィールドを一つ作成しておくと、そういった手間が発生しないことになります。
2022-03-31 Figure 04.png
では早速見ていきましょう。先ずはクエリビルダを起動します。
カスタムフィールドを定義する対象となる製品とテーブルを選択します。
2022-03-31 Figure 12.png
ここで、カスタムフィールドの作成に入る前に、ある情報を収集しておきましょう。カスタムフィールドの定義時には、対象データベース内のフィールドの実名が必要となります。下図のように、右クリックメニューから[情報]を選択し、結合する二つのフィールドの実名を確認しておきます。
2022-03-31 Figure 02.png
[情報]ダイアログでは[技術的詳細]タブへ移動します。
2022-03-31 Figure 03.png
フィールドの実名の確認が済んだら、選択領域の右クリックメニューから[カスタマイズ] -> [フィールドを追加]を選択します。
2022-03-31 Figure 01.png
[カスタムフィールド編集]ダイアログでは、下図のように四つのプロパティに値を定義します。
2022-03-31 Figure 07.png
Description: クエリビルダの選択領域に表示される名称を記述します。
Data Type: 今回はStringですね。
SQL Column:
ここで二つのフィールド値の結合を行います。ここでの構文はそのままSELECT文に使用されるので、対象となるデータベースエンジンに準じた構文を記述します。今回はMicrosoft SQLなので、

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

となります。{_Table.Alias}は実行時にSharperlightエンジンによって解決されるコントロールタグです。
SQL Data Type: Charを指定します。
上記四つのプロパティを記述し終えたら、[ok]ボタンで保存しましょう。
クエリビルダの選択領域に作成したカスタムフィールドが青字で表示されます。
2022-03-31 Figure 08.png
出力領域にドラッグ&ドロップします。
2022-03-31 Figure 09.png
[プレビュー]ボタンで動作確認をします。
2022-03-31 Figure 10.png
生成および実行されたSQL文も確認してみます。
2022-03-31 Figure 11.png
以上がカスタムフィールドの定義および使用の簡単な説明です。
:postbox:Sharperlight

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?