モデル参照最終更新日: 2020年7月6日
R8 | R9

モデル参照項目の指定方法

モデル参照項目は ID 部と内容部から構成されます。次に示すような形式で扱うことができます。

例:スタッフモデルの構成

ID部 内容部
1000 山田 太郎
1001 鈴木 一郎

ここで、上記のスタッフモデルを参照する項目 staffname を用意したとします。
自動計算式の中では、次のような指定を行うことができます。

${staffname}

内容部を取得します。戻り値の型はスタッフモデルへの「参照先モデル項目」に指定した項目の型になります。 上の例では "山田 太郎" "鈴木 一郎" という文字列が返されます。

${staffname#id}

ID部を取得します。戻り値の型はスタッフモデルへの「参照モデルの主キー」になります。型はスタッフモデルの主キー項目の型と同じになります。 上の例では 1000, 1001 という数値が返されます。

${staffname#content}

${staffname} と同じ意味になります。

ユーザー定義チェックにおける内容部の取得

ユーザー定義チェックの場合、内容部を取得するためには常に #content 指定が必要になります。 上の例では${staffname} ではなく、${staffname#content} をお使いください。

リストボックス項目の扱い

リストボックスとして参照している項目を式中に指定した場合、新規登録画面を開いたときの初期値は null となります。これは選択肢の先頭が「(未選択)」となっているためです。未選択項目を作成しない場合の初期値は、表示されている選択肢の先頭の値を(#id や #content を指定して)取得することができます。

選択肢の絞り込み指定を行った場合、未選択項目を作成しない場合でも初期値は null となります。(絞り込み操作を行うことで、はじめて選択値がセットされます。)

参照連動項目

参照連動項目は #id, #content 指定を行うことはできません。転記された値をそのまま取り扱います。

参照連動元の項目は図1に示すように ID 値が格納されます。

図1 参照連動項目の取り扱い

ここで「単価モデル」の「内容」を用いたい場合は、図2のように内容部を参照連動してください。

図2 参照連動をつなぐ

関数と組み合わせたときの型情報

${XXX#id}の型は参照先モデルの主キーの型となります。

このため、関数内で利用する場合は必要に応じてTOSTRを用いて文字列に変換してください。またはVALUEを用いて数値に変換してください。

例:モデル参照(リストボックス)の項目 item1 が選択済みのとき、選択された ID 値を返す。そうでなければ 文字列「(未選択)」を返す。(この演算結果は文字列型の項目に格納する、としています。)

IF(SELECTED(${item1}), TOSTR(${item1#id}), "(未選択)")

item1#id は整数型であるため関数 TOSTR で囲み、文字列型へ変換しています。

リストボックスで「未選択を用意する」場合

モデル参照(リストボックス)で、"(未選択)" という選択肢を用意する/しない、を指定することができます。

未選択項目を作成する場合、この項目を計算式で用いたとき、新規登録画面を開いたときの値は null となります。

未選択項目を作成しない場合、この値は選択肢の先頭の値になります。#id や #content を指定して、具体的な値を取得できます。

選択肢の絞り込み指定を行った場合、未選択項目を作成しない場合でも初期値は null となります。絞り込み操作を行うことで、はじめて選択値がセットされるためです。

上のいずれかのルールによって初期値が null となった場合、この項目に紐づく参照連動項目も解決されません。(連動元項目が null であるため。)

主キーが複合キーのモデルを参照する項目

モデル model1 の項目 item1 はモデル参照であり、参照先モデル model2 が複合主キー pkey1, pkey2 となっている構成を想定します。

設計情報の上では "item1" という項目は一つですが、Wagbyの内部では二つの値を保持するフィールド(値を保持する入れ物)が用意されています。フィールドの名前は "item1_pkey1", "item1_pkey2" となっています。

この "item1" に計算式を設定する場合はスクリプトを利用します。スクリプトの「ヘルパ > 計算」のタイミングで、値をセットしてください。例えば次のようなスクリプトになります。

model1.item1Pkey1 = (pkey1の型に準拠した値);
model1.item1Pkey2 = (pkey2の型に準拠した値);

スクリプトでは、項目IDはキャメル記法を使います。

参照連動との組み合わせ

上記の例で、さらに item1 の値を連動元とした参照連動項目がある場合、スクリプトで参照連動の解決を行うコードも記述するようにしてください。[詳細...]

ジョブにおける式記述の制約

ジョブで用いる式(メール送受信ジョブにおける起動条件、成功時・失敗時の式など)記述では、モデル参照項目に対して #content 指定を行うことができません。#id のみ、利用できます。