Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


データソースをアプリ変数で動的に変更する方法

Valence 6.0 20210511.1で追加された新機能、vvIn_virtualを使用するとApp Builderのデータソースをアプリ変数で動的に変更することができます。新機能のvvIn_virtualについて本Tipsでご紹介します。

新機能 vvIn_virtualとは?

vvIn_virtualはValence6.0 20210511.1で追加された機能です。
App Builderのデータソース作成画面で使用する関数で、アプリ変数を使用してデータソースのSQLを動的に変化させることができます。

アプリ変数が設定されている場合、されていない場合でデータソースのSQLを置き換える機能を持つ、データソース専用の関数です。

vvIn_virtualは最大6つのパラメータ引数を持ちます。

  1. 変数名:アプリ変数名
  2. デフォルト値:変数が未設定の場合に使用されるデフォルト値
  3. 変数型:数値の場合は[num]、文字値の場合は[char]、日付の場合は[date]を指定
  4. サイズ:アプリ変数の文字数または数値桁数
  5. 小数点以下の桁数(オプション):[3.変数型がnum]の場合に指定
     ※未設定の場合は0として扱われます。
  6. 引用符で括る(オプション):[true:括る]または[false:括らない]を設定します。パラメータに引用符を含めるかを指定

vvIn_virtualの使用方法

vvIn_virtualはApp Builderのデータソース定義で使用します。

自由形式のSQLステートメントで使用

自由形式のSQLステートメントで利用する場合には、SQL記述画面で右クリックすることによりvvIn_virtualの設定画面を表示できます。

データソース定義のWizardで使用

データソース追加のウィザード画面の場合は、列の計算項目やフィルター条件のSQL記述で利用できます。

vvIn_virtualの使用例

Tipsでは、vvIn_virtualの使用例をグラフ表示を切り替えるアプリケーションにてご紹介します。

vvIn_virtualを利用したグラフ表示切替

サンプルのファイル(DMCRSSP)は、商品の販売数(CRHNSU)、販売した担当者名(CRTTNM)と
商品名(CRSHNM)のフィールドを持つファイルです。

例えば、「担当者ごとの販売数」を取得するデータソースのSQLは以下です。

例) 担当者ごとの販売数

SELECT F1.CRTTNM AS F1_CRTTNM, SUM(F1.CRHNSU) AS TOTAL FROM DMCRSSP F1 GROUP BY CRTTNM

次に、「商品名ごとの販売数」を取得するデータソースのSQLは以下です。

例) 商品名ごとの販売数

SELECT F1.CRSHNM AS F1_CRTTNM, SUM(F1.CRHNSU) AS TOTAL FROM DMCRSSP F1 GROUP BY CRSHNM

上記2つのSQLは赤文字のフィールド定義のみが異なります。
vvIn_virtualを使用すると、赤文字で定義した箇所をアプリ変数で動的に変更することができます。

例) vvIn_virtualを利用したSQL

vvIn_virtualを利用して、デフォルトは担当者ごとの販売数を取得、アプリ変数が設定された場合に商品名ごとの販売数を取得するSQLは以下です。

SELECT
  vvin_virtual(
    'GroupTarget',
    'CRTTNM',
    'char',
    6,
    NULL,
    false
  ) AS crttnm,
  sum(crhnsu) AS total
FROM
  dmcrssp
GROUP BY
  vvin_virtual(
    'GroupTarget',
    'CRTTNM',
    'char',
    6,
    NULL,
    false
  )

vvIn_virtualを利用すると、アプリ変数の値によって動的にSQLを変更することができます。

つまり、上記「例) vvIn_virtualを利用したSQL」では、アプリ変数(GroupTarget)が未設定の場合、 「例) 担当者ごとの販売数 」のSQLが実行されます。アプリ変数 (GroupTarget) に商品名フィールド名(CRSHNM)が設定されている場合には、「例) 商品名ごとの販売数 」のSQLが実行されます。

vvIn_virtualを利用したデータソースにウィジェットを追加

アプリケーションに追加したウィジェットを設定後、アプリ変数の編集画面で、アプリ変数GroupTargetを定義します。

次に、動作内容(Behavior)でボタン押下時にアプリ変数(GroupTarget)に値を設定します。
商品別、担当者別のボタンを作成後、それぞれアプリ変数を設定してます。
アプリ変数の変更後には、グラフを再読み込みするために、ウィジェットをリフレッシュする動作を追加しました。

商品別のボタンクリック
担当者別のボタンクリック

グラフの表示切替実行例

アプリケーションを実行すると、最初に 「担当者ごとの販売数グラフ」が表示されます。

「商品別」のボタンをクリックすると、グラフの表示が「商品名ごとの販売数グラフ」に変わります。

ボタンをクリックすることでアプリ変数が書き換わり、データソースのSQLがvvIn_virtualにより動的に変更されて、「担当者別の販売数グラフ」と「商品別の販売数」グラフを表示することができます。

おわりに

新しく追加された、vvIn_virtualの機能はいかがでしたでしょうか?
今回ご紹介した例以外でも、vvIn_virtualは様々な使用が可能です。
今後のTipsで利用方法について紹介していきたいと思います。