サポート > Wagby定義ファイル > 12 自動計算 > 繰り返し項目・繰り返しコンテナ・外部キー関連モデルの扱い

式中に繰り返し項目・繰り返しコンテナ・外部キー関連モデルについての演算を行うことができます。

利用できる演算

繰り返し項目・繰り返しコンテナ・外部キー関連モデル(詳細表示画面)では、次に示す演算を行うことができます。

演算子 説明
count レコードの総数を求めます。
sum 合計値を求めます。
avg 平均値を求めます。
max 最大値を求めます。
min 最小値を求めます。
first 先頭のレコードの値を取得します。
last 最後のレコードの値を取得します。
slice N番目のレコードの値を取得します。
join すべての項目値を連結した文字列を作成します。

count演算子の詳細

計算結果を格納する項目の型は「整数」としてください。

  • 繰り返し項目 number の数を求める。
    ${count(number)}
  • 繰り返しコンテナ report の数を求める。
    ${count(report)}
    (*) この設定ではコンテナ名だけを指定します。コンテナ内のいずれの項目名も含める必要はありません。
  • 外部キー関連モデル support の数を求める。
    ${count(support_lp)}
    (*) この設定では、外部キー関連モデルのモデル名に接尾語 "_lp" を付与してください。
    (*) この設定は詳細表示画面でのみ有効です。一覧表示画面については将来の Wagby で対応する予定です。

sum演算子の詳細

計算結果を格納する項目の型、ならびに計算対象項目の型は「整数」(あるいはその他、数値を表現する型)としてください。

  • 繰り返し項目 number の合計を求める。
    ${sum(number)}
  • 繰り返しコンテナ report/number の合計を求める。
    ${sum(report/number)}
  • 外部キー関連モデル support の項目 kingaku の合計を求める。
    ${sum(support_lp.kingaku)}
    (*) この設定では外部キー関連モデルのモデル名には接尾語 "_lp" を付与し、"." の後に項目名を記述します。この項目名は、一覧表示の対象となっている必要があります。
    (*) この設定は詳細表示画面でのみ有効です。一覧表示画面については将来の Wagby で対応する予定です。

avg演算子の詳細

計算結果を格納する項目の型は「8バイト浮動小数点」としてください。 その他の記述例、制約については sum 演算子と同様です。

max演算子,min演算子の詳細

計算結果を格納する項目の型、ならびに計算対象項目の型は「整数」(あるいはその他、数値を表現する型)としてください。 文字列型や日付型といった項目に max 演算子を適用することはできません。

その他の記述例、制約については sum 演算子と同様です。

first演算子,last演算子の詳細

文字列型/整数型/日付型など、さまざまな型で用いることができます。計算結果を格納する項目の型と、計算対象となる項目の型を同じとしてください。(ただしマスタモデル参照、ストアモデル参照については参照先の型を指定してください。)

この設定を行うときは繰り返しコンテナ内のすべての項目について、ソートボタンを非表示にすることを推奨します。 (ソートされてしまうと、最後のレコードが変わってしまうため。)

その他の記述例、制約については sum 演算子と同様です。

slice演算子R6.3.0

N 番目のレコードに関する情報を取得します。文字列型/整数型/日付型など、さまざまな型で用いることができます。計算結果を格納する項目の型と、計算対象となる項目の型を同じとしてください。(ただしマスタモデル参照、ストアモデル参照については参照先の型を指定してください。)

開始レコード番号は項目名の横に(コンマ区切りの第二引数として)指定します。レコード番号は「0」から数えます。また、指定したレコードが存在しなかった場合は、空白が表示されます。

レコード番号を示す特別な表記 "first" と "last" を使うことができます。"first" は先頭のレコードを、"last" は末尾のレコードの意味します。

指定したレコードが存在しない場合に、セットする値を指定することができます。コンマ区切りの第三引数に代替値を指定してください。

  • 繰り返し項目 number の最初の項目の値を取得する。
    ${slice(number,0)}
  • 繰り返しコンテナ report/number の先頭から 1 番目の項目の値を取得する。ただしレコードが存在しなかった場合は "なし" を取得する。(取得する項目の型は文字列型であること)
    ${slice(report/number, first+1, "なし")}
  • 外部キー連携モデル support の項目 kingaku の末尾から 2 つ前の値を取得する。ただしレコードが存在しなかった場合は 0 を取得する。
    ${slice(support_lp.kingaku, last-2, 0)}
    (*) この設定では外部キー関連モデルのモデル名には接尾語 "_lp" を付与し、"." の後に項目名を記述します。この項目名は、一覧表示の対象となっている必要があります。
    (*) この設定は詳細表示画面でのみ有効です。一覧表示画面については将来の Wagby で対応する予定です。

join演算子R6.3.0

レコードの値を連結した文字列を作成します。文字列型/整数型/日付型など、さまざまな型で用いることができます。計算結果を格納する項目の型は「文字列型」としてください。

第二引数に連結時の文字を指定することができます。省略時は「,」(コンマ)が用いられます。

  • 繰り返し項目 number の値を連結した文字列を取得する。区切り文字はデフォルト値「,」(コンマ)を用いる。
    ${join(number)}
  • 繰り返しコンテナ report/staff の値を連結した文字列を取得する。区切り文字は「;」(セミコロン)を用いる。
    ${join(report/staff,';')}
  • 外部キー連携モデル support の項目 companyname の値を連結した文字列を取得する。区切り文字はデフォルト値「,」(コンマ)を用いる。
    ${join(support_lp.staff)}
    (*) この設定では外部キー関連モデルのモデル名には接尾語 "_lp" を付与し、"." の後に項目名を記述します。この項目名は、一覧表示の対象となっている必要があります。
    (*) この設定は詳細表示画面でのみ有効です。一覧表示画面については将来の Wagby で対応する予定です。

マスタモデル・ストアモデル項目を扱うR6.3.0

マスタモデル・ストアモデル項目の扱いは Wagby のバージョンによって異なります。

R6.3.0 以降

繰り返し項目
(繰り返し項目ではマスタモデル・ストアモデル項目に未対応のため、説明を割愛します。)
繰り返しコンテナ
コンテナ内に含まれているマスタモデル・ストアモデル参照の ID 部と内容部を指定することができます。 単に項目名のみを指定した場合は、その「内容」が対象となります。
その他、基本的なポリシーは「マスタモデル参照・ストアモデル参照項目の扱い」をお読みください。
外部キー
#id 指定を行うことはできません。すべて「内容部」になります。

R6.3.0 より前のバージョン

繰り返し項目
(繰り返し項目ではマスタモデル・ストアモデル項目に未対応のため、説明を割愛します。)
繰り返しコンテナ
マスタモデル・ストアモデル項目の場合は ID 部を扱うことになります。内容部(および #content 表記)を用いることはできません。
外部キー
#id 指定を行うことはできません。すべて「内容部」になります。

実行例

ここでは、繰り返しコンテナ「商談履歴」の各合計金額項目を加算し、1.05を乗じた「総合計」を求める例を紹介します。 (コンテナの各レコードの「合計金額」は「個数」×「単価」となっています。)


図1 新規登録画面

「追加」ボタンをクリックすると、商談番号2の欄が表示され、総合計が自動計算されます。


図2 自動計算された値が表示される

データを保存後、詳細表示画面に計算結果が表示されていることが分かります。(表示形式はフォーマットを指定しています。)


図3 登録データの表示

設定方法

モデル定義シートにて、「総合計」の項目で「詳細表示」ボタンをクリックし、モデル項目定義シートを開きます。


図4 総合計項目の設定(1)

自動計算の項目で「四則演算」を選択し、「${sum(report/goukei)} * 1.05」と入力します。


図5 総合計項目の設定(2)

また、計算対象となる「合計金額(report/goukei)」には「自動計算に使用される」欄に「○」を指定してください。


図6 総合計項目の設定(3)