モデル参照
最終更新日: 2020年7月6日
R8 | R9
モデル参照項目は ID 部と内容部から構成されます。次に示すような形式で扱うことができます。
例:スタッフモデルの構成
ここで、上記のスタッフモデルを参照する項目 staffname を用意したとします。
内容部を取得します。戻り値の型はスタッフモデルへの「参照先モデル項目」に指定した項目の型になります。
上の例では "山田 太郎" "鈴木 一郎" という文字列が返されます。
ID部を取得します。戻り値の型はスタッフモデルへの「参照モデルの主キー」になります。型はスタッフモデルの主キー項目の型と同じになります。
上の例では 1000, 1001 という数値が返されます。
${staffname} と同じ意味になります。
ユーザー定義チェックの場合、内容部を取得するためには常に #content 指定が必要になります。
上の例では${staffname} ではなく、${staffname#content} をお使いください。
リストボックスとして参照している項目を式中に指定した場合、新規登録画面を開いたときの初期値は null となります。これは選択肢の先頭が「(未選択)」となっているためです。未選択項目を作成しない場合の初期値は、表示されている選択肢の先頭の値を(#id や #content を指定して)取得することができます。
選択肢の絞り込み指定を行った場合、未選択項目を作成しない場合でも初期値は null となります。(絞り込み操作を行うことで、はじめて選択値がセットされます。)
参照連動項目は #id, #content 指定を行うことはできません。転記された値をそのまま取り扱います。
参照連動元の項目は図1に示すように ID 値が格納されます。
ここで「単価モデル」の「内容」を用いたい場合は、図2のように内容部を参照連動してください。
${XXX#id}の型は参照先モデルの主キーの型となります。
このため、関数内で利用する場合は必要に応じてTOSTRを用いて文字列に変換してください。またはVALUEを用いて数値に変換してください。
例:モデル参照(リストボックス)の項目 item1 が選択済みのとき、選択された ID 値を返す。そうでなければ 文字列「(未選択)」を返す。(この演算結果は文字列型の項目に格納する、としています。)
item1#id は整数型であるため関数 TOSTR で囲み、文字列型へ変換しています。
モデル参照(リストボックス)で、"(未選択)" という選択肢を用意する/しない、を指定することができます。
未選択項目を作成する場合、この項目を計算式で用いたとき、新規登録画面を開いたときの値は null となります。
未選択項目を作成しない場合、この値は選択肢の先頭の値になります。#id や #content を指定して、具体的な値を取得できます。
選択肢の絞り込み指定を行った場合、未選択項目を作成しない場合でも初期値は null となります。絞り込み操作を行うことで、はじめて選択値がセットされるためです。
上のいずれかのルールによって初期値が null となった場合、この項目に紐づく参照連動項目も解決されません。(連動元項目が null であるため。)
モデル model1 の項目 item1 はモデル参照であり、参照先モデル model2 が複合主キー pkey1, pkey2 となっている構成を想定します。
設計情報の上では "item1" という項目は一つですが、Wagbyの内部では二つの値を保持するフィールド(値を保持する入れ物)が用意されています。フィールドの名前は "item1_pkey1", "item1_pkey2" となっています。
この "item1" に計算式を設定する場合はスクリプトを利用します。スクリプトの「ヘルパ > 計算」のタイミングで、値をセットしてください。例えば次のようなスクリプトになります。
上記の例で、さらに item1 の値を連動元とした参照連動項目がある場合、スクリプトで参照連動の解決を行うコードも記述するようにしてください。[詳細...]
ジョブで用いる式(メール送受信ジョブにおける起動条件、成功時・失敗時の式など)記述では、モデル参照項目に対して #content 指定を行うことができません。#id のみ、利用できます。
モデル参照項目の指定方法
ID部
内容部
1000
山田 太郎
1001
鈴木 一郎
自動計算式の中では、次のような指定を行うことができます。
${staffname}
${staffname#id}
${staffname#content}
ユーザー定義チェックにおける内容部の取得
リストボックス項目の扱い
参照連動項目
関数と組み合わせたときの型情報
IF(SELECTED(${item1}), TOSTR(${item1#id}), "(未選択)")
リストボックスで「未選択を用意する」場合
主キーが複合キーのモデルを参照する項目
model1.item1Pkey1 = (pkey1の型に準拠した値);
model1.item1Pkey2 = (pkey2の型に準拠した値);
参照連動との組み合わせ
ジョブにおける式記述の制約