データを扱うアプリケーションで必ず必要なクエリ、そのクエリの作成を支援するSharperlightアプリケーションがクエリビルダ
です。
そのクエリビルダ
にはフィルター定義に関するオプション群のなかにプロンプト専用フィルターというものがあります。
今回は、そのプロンプト専用フィルターを使用してみます。
Sharperlightクエリビルダで作成されたクエリは、Sharperlightエンジンにより動的にSQL文となり実行されます。
定義されるフィルターは、基本的にクエリ対象テーブルに存在する列に対して作成され、それらがSQL文のWHERE句を構成します。
しかしながら、そういった通常のフィルターに対してプロンプト専用フィルターオプションをオンにすると、そのフィルターはWHERE句から除外されます。
またクエリ対象テーブルに存在しない列をフィルターに追加し、引数あるいは変数としてクエリの拡張に使用する際、そういった列は強制的にプロンプト専用フィルターとなり、WHERE句として生成されることはありません。
プロンプト専用フィルターの動き
このようなクエリがあります。フィルターのCanceledを使用します。
通常では、このクエリのSQL文のWHERE句はこのようになります。Canceledフィルターが使用されていますね。
今度はプロンプト専用フィルターオプションをオンにしてみます。
背景が薄い黄色になります。
生成されたSQL文では、このようにWHERE句には存在しなくなります。
プロンプト専用フィルターの利用例
デバッグ時
クエリの作成中は、結果を確認しながら作業をします。その作業中クエリに必要なフィルターなのに、結果確認のため一時的にWHERE句から外したい場合があります。そのような場合にそのフィルターを削除してしまうのではなく、プロンプト専用フィルターオプションをオンにして結果を確認し、その後はまたオフにすれば再度フィルターを定義し直す必要はありません。複雑な定義のフィルターであれば尚更のことです。
間接的にフィルターとして
クエリーへの引数的な使い方です。
プロンプト専用フィルターとして定義したフィルターにある値を渡します。その値を元に別の通常フィルターの値を決定します。
参照:【クエリビルダ】プロンプトフィルター:通常フィルター値の決定要因として使う
クエリ結果に値を渡す
これもクエリーへの引数的な使い方です。
プロンプト専用フィルターとして定義したフィルターにある値を渡します。その値を出力アイテムとして出力したり、その値を元に他の出力アイテムの値を計算したりします。
参照:【クエリビルダ】プロンプトフィルター:出力アイテムで使用する
プロンプト専用フィルターを使用することで、かなりクエリ定義の幅が拡がるのではないでしょうか。
では、失礼します。