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 1 year has passed since last update.

【クエリビルダ】プロンプトフィルター:通常フィルター値の決定要因として使う

Last updated at Posted at 2023-03-28

【クエリビルダ】プロンプトフィルターを使いこなす記事に関連する投稿です。
プロンプト専用フィルターの使用例を紹介します。この使用例は実用的ではないでしょうが、基本となる考え方をご紹介できればと思います。

使用例では、SAP Business Oneデータモデルを使用し、プロンプト専用フィルターに渡した値を元に、Document Date列にフィルターをかけます。

Sharperlightパブリッシャーでレポートを作成し、そのレポートのクエリ定義でプロンプト専用フィルターを使用してみます。
先ずは、Sharperlightアプリケーションメニューからパブリッシャーを起動します。
image.png
パブリッシャーが起動したら新規ボタンで新しいレポートの作成を開始します。

クエリの編集

クエリを編集ボタンでクエリビルダを起動します。

製品Companyテーブルを下図のようにそれぞれ選択します。選択したテーブルに付随する既定の必須フィルターが自動設定されます。それらはそのままの状態で使用します。
image.png

フィルターの定義

この例では、年度季節を引数として渡します。よって二つのプロンプト専用フィルターを準備します。
番号型とテキスト型の二種類を追加します。
クエリビルダのフィルター領域の右クリックメニューからその他のサブメニューを開きます。
image.png
サブメニューでは、様々なデータ型を選択することができます。
image.png

プロンプト専用フィルター : 年度

先ずは番号を選択し、フィルター領域に番号型のフィルターを追加します。フィルターの説明ダイアログが表示されるので、年度と入力します。
image.png
フィルターオプションダイアログを開き、フィルター名説明1つの値のみオプションを下図のように設定します。
image.png

プロンプト専用フィルター : 季節

次にフィルター領域にテキスト型のフィルターを追加します。フィルターの説明ダイアログが表示されるので、季節と入力します。
image.png
フィルターオプションダイアログを開き、フィルター名説明1つの値のみオプションを下図のように設定します。
image.png
このようになります。
image.png

通常フィルター : Document Date

クエリのWHERE句に使用される通常のフィルターを設定します。そして上記で設定したプロンプト専用フィルターをここで使用します。
選択リストからDocument Date列をフィルター領域にドラッグ&ドロップ。
フィルターオプションダイアログを開き日付オプションの選択から開始します。
関数タブで、この年/月オプションを設定します。
image.png
次にFrom値とTo値に拡張表現式を用いてプロンプト専用フィルターの値を使用するよう設定を行います。
image.png

演算子

演算子には、(Between)を選択します。

演算子または値 (From)

演算子または値(From)には、拡張表現を用いてSwitch文を設定します。右側のボタンでエディタが開きます。
image.png
image.png
プロンプト専用フィルター:年度2006が渡され、プロンプト専用フィルター:季節が渡された場合、春の開始月である季節`2006/03を、夏の場合は、2006/06をといった具合です。

_Expression(
    Switch( "{@季節}"
        ,"春","{@年度}" + "/03"
        ,"夏","{@年度}" + "/06"
        ,"秋","{@年度}" + "/09"
        ,"冬","{@年度}" + "/12"
        ,"<ALL>"
    )
)

値 (To)

(To)にもSwitch文を拡張表現を用いて設定します。
image.png
image.png
プロンプト専用フィルター:年度2006が渡され、プロンプト専用フィルター:季節が渡された場合、春の終り月である季節2006/05を、夏の場合は、2006/08をといった具合です。
の場合は、翌年の2月が終り月なので、プロンプト専用フィルター:年度に1を加算します。

_Expression(
    Switch( "{@季節}"
        ,"春","{@年度}" + "/05"
        ,"夏","{@年度}" + "/08"
        ,"秋","{@年度}" + "/11"
        ,"冬", CStr({@年度}+1) + "/02"
        ,"<ALL>"
    )
)

出力アイテムの定義

選択リストから以下のような列を出力アイテムとして設定します。
image.png

クエリのプレビュー

プロンプト専用フィルター:年度プロンプト専用フィルター:季節に、それぞれ2006と入力してプレビューボタンを押します。
出力結果のDocument Date列の値を確認します。全てが2006/03から2006/05の範囲であればフィルターが正常に動いているということです。
同じようにそしてを確認してみましょう。特にの場合は、全てが2006/12から2007/02の範囲であればOKです。


最後、クエリに戻り年度季節以外のフィルターを全て非表示に設定し、クエリを保存します。
image.png

レポートからの検証

公開レポートのダイアログに戻ったら、コードグループおよびタイトルを記入して保存します。
image.png
Sharperlightサービスを起動してブラウザで表示してみます。
このようになります。
image.png


今回、実用的ではない例で記事を書いてみましたが、プロンプト専用フィルターの使い方とその動きをご紹介できたかなと思っています。

では、失礼します。

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?