参照連動最終更新日: 2020年12月16日
R8 | R9

例と定義方法

「顧客モデル」と「サポートモデル」を例に説明します。サポートモデルで「顧客名」を参照すると、それに関連する最新の「顧客会社名」が同時に表示されます。この方式によりデータの重複入力の手間がなくなり、かつ、常に最新のデータを参照することができます。

図1 関連項目を自動的に参照させる

図2に参照連動を設定したサポートモデルの新規登録画面を紹介します。
「検索...」ボタンから、顧客名を確定させます。(この詳細は「参照先モデルの参照>検索画面」をお読みください。

図2 サポート新規登録画面

顧客名を確定させると会社名が自動設定されます。会社名項目は参照連動型として定義しています。

図3 顧客を確定させると会社名が自動設定される(参照連動)

定義方法

サポートモデルを図4のように定義しています。

図4 サポートモデルの定義

「顧客名」項目は、顧客モデルを参照しています。

図5 顧客名項目の定義

「顧客会社名」項目も、同じ顧客モデルを参照しています。連動する項目名「顧客名」が決まると、参照先モデル項目名「会社名」が定まる、としています。

図6 顧客会社名を参照連動として定義する

ワンポイント

この例のように、モデルには「データベースに保持される情報」だけでなく「画面に表示される情報」も含めることができます。

仕様

データベースとの関係

参照連動項目は標準ではデータベースに保存されません。(テーブルにもカラムが生成されません。)

参照連動を設定すると、データベース保存設定は自動的に解除されます。表示のタイミングで、データベースから最新の値を取得します。

(保存できるように設定することもできます。詳細は"参照連動項目を自モデルに保存する"をお読みください。"参照連動項目を参照先モデルに保存する"も関連する内容です。

図7 参照連動を設定すると、データベース保存設定は自動的に解除される

自動的に読み込み専用になる

参照連動項目は自動的に「読み込み専用」となります。

図8 参照連動項目を選択すると、読み込み専用設定が自動的に行われる

参照先項目がテキストエリアの場合

参照先項目が文字列型(テキストエリア)の場合、これを参照連動した場合は次のようになります。

  • 登録・更新・詳細・一覧画面では、テキストエリア(読み取り専用)で表示されます。
  • 参照連動にて「出力制御>テキストエリア>ラベルで表示する」を有効にすると、詳細画面ではテキストエリアにしない、という設定を行うことができます。

設計上の留意点

参照元項目(上記例ではサポートモデルの顧客名)が "DB保存なし" の場合、参照連動は機能しません。

参照連動型項目に、次の設定を行うことはできません。

  • 参照元項目(上記例ではサポートモデルの顧客会社名)が繰り返し項目である。
  • 参照元項目が繰り返しコンテナで、参照先項目(上記例では顧客モデルの顧客会社名)が繰り返し項目である。
  • 参照先項目(上記例では顧客モデルの顧客会社名)が繰り返しコンテナ内にある。
  • データ指定項目(上記例ではサポートモデルの顧客名)に下記以外を指定すること。
    • 項目の型が「参照先モデルの項目参照(リストボックス)」
    • 項目の型が「参照先モデルの項目参照(ラジオボタン)」
    • 項目の型が「参照先モデルの項目参照(検索画面)」
    • 外部キー項目
図9 参照連動として指定できる項目と、指定できない項目

参照連動項目を自モデルに保存する

参照連動項目をデータベースに保存する設定を行うこともできます。

図10は、参照連動項目「顧客会社名」をサポートモデルで保存可能とした例です。参照連動された値を修正して保存することができます。

図10 参照連動項目を修正して保存する

ワンポイント

入力可能となった「顧客会社名」を修正後、再び別の顧客を参照すると、顧客会社名は再び参照連動されます。例えば図10において、別の顧客 "佐藤" を選択し直すと、顧客会社名は "佐藤" 氏の会社名へ変更されます。

定義方法

サポートモデルの「顧客会社名」項目の詳細定義ダイアログを開きます。「詳細>データベースの詳細」で、「値をデータベースに保存する」を有効とします。さらに、参照モデルの格納先を「自モデル」とします。

図11 参照連動項目の値をデータベースに保存する設定

また、入力できるようにするため、読み込み専用の設定を解除します。

図12 読み込み専用設定を解除する

データベースとの関係

保存後の値は、顧客モデルの顧客会社名と切り離されて管理されます。その後、顧客モデルの変更が発生した場合でも、サポートモデル側に反映されることはありません。

図13 自モデル格納のイメージ

この対策として、顧客モデルが修正されたとき、この顧客モデルを参照しているサポートモデルを非同期で更新するというアプローチがあります。この対応は非同期処理のためのメッセージサーバを用意し、かつスクリプトで更新処理を行うというものです。[詳細...]

参照連動項目を自モデルに保存する(上書きタイミングの制御)

参照連動元が計算式で求められる場合、次のように参照連動ルールを変更することができます。

  • 参照連動項目が空白であれば、参照連動を機能させる。
  • 参照連動項目に値があれば、参照連動させない。

動作例

参照先のモデル「取引先」を用意しておきます。

図14 取引先マスタ

上の取引先を参照する「受注入力」の新規登録画面を開きます。ここで「取引先」を選択するのはサブウィンドウ(検索画面)ですが、この値のコピーを「取引先キー連動元(リストボックス)」という項目で保持するようにしています。実際の参照連動元となるのは、この項目です。

図15 受注入力新規登録
※ 本番運用では、「取引先キー連動元(リストボックス)」は隠し項目とするとよいでしょう。

「取引先主キー」を確定すると、その値が「取引先キー連動元(リストボックス)」に転記されます。さらにこの値を元に「取引先コード」「取引先口座」が参照連動されます。これらは自モデル保存項目ですので、参照連動後に値を書き換えて保存することができます。

図16 取引先主キーを確定する

ここで「取引先主キー」を変更したときの動作を検討します。

取引先主キーを変更しても、すでに設定済みの値を維持する

「取引先コード」「取引先口座」がそれぞれ空白の場合、当該項目を参照連動します。空白でなければ(何らかの値がすでに設定されていれば)参照連動されません。これは参照連動後に値を書き換えた場合、書き換えた値を優先するケースです。

図17 参照連動で上書きされない

取引先主キーの変更に伴い、常に自動更新する

「取引先キー連動元(リストボックス)」が変わった場合は常に参照連動させるケースです。

図18 常に参照連動で上書きした場合

定義方法

今回の例で用いた「取引先マスタ」と「受注入力」モデルです。

図19 「取引先マスタ」と「受注入力」モデル

受注入力モデルです。「取引先キー連動元(リストボックス)」を参照連動元としています。

図20 「取引先キー連動元(リストボックス)」が参照連動元となっている

「取引先キー」はモデル参照(検索画面)としています。

図21 「取引先キー」の設定

「取引先キー連動元(リストボックス)」は、モデル参照(リストボックス)としています。

図22 「取引先キー連動元(リストボックス)」の設定

この「取引先キー連動元(リストボックス)」は、自動計算によって求められます。今回の設定のポイントは、参照連動元は入力ではなく計算によって求めるようにするというものです。

図23 「取引先キー」の値を転記する

「取引先コード」「取引先口座」は参照連動です。

図24 「取引先コード」の設定

自モデル保存ですので、値をデータベースに保存します。

図25 値をデータベースに保存する

また、読み込み専用を解除し、入力可能とします。

図26 読み込み専用を解除する

参照連動のタイミングの設定

モデル参照の設定のオプションから、「連動タイミング(参照元が自動計算)」を設定します。

  • 図17 "取引先主キーを変更しても、参照連動更新を維持する" 場合、この設定を空白とします。空白のときは値が空のときのみ参照連動するようになっています。標準はこちら(空白)です。
  • 図18 "取引先主キーの変更に伴い、自動更新する" 場合、この設定を "連動する項目の変更時" とします。
図27 「連動タイミング(参照元が自動計算)」の設定
※ この設定は参照連動元が自動計算によって定まる場合にのみ、有効です。

参照連動項目を参照先モデルに保存する

動作例

図25は、参照連動項目「顧客会社名」をサポートモデルで保存可能とした例です。修正した値は、参照先である「顧客」モデルに反映されます。

図28 参照連動項目を修正して保存する

(参照先である)顧客モデルが修正されています。

図29 参照先モデルの項目が修正されている

定義方法

サポートモデルの「顧客会社名」項目の詳細定義ダイアログを開きます。「詳細>データベースの詳細」で、「値をデータベースに保存する」を有効とします。さらに、参照モデルの格納先を「参照先のモデル」とします。

図30 参照連動項目の値をデータベースに保存する設定(参照先モデル)

また、入力できるようにするため、読み込み専用の設定を解除します。

図31 読み込み専用設定を解除する

データベースとの関係

この設定は「トランザクション」として扱われます。複数のモデルを更新し、データベースにコミットされます。

図32 参照先モデル格納のイメージ

自動計算式の制約

モデルAがモデルBを参照する関係において、モデルAの保存時に参照先モデルBのitem1項目を書き換えるとします。このとき、モデルBのitem2項目はitem1項目の値を使って計算される項目であったとします。

参照連動項目の入力フィルタ

参照連動自モデル(または他モデル)保存項目の入力フィルタは次のルールとなります。

フィルタ指定を空白とする フィルタを指定する
参照先項目と同じフィルタが使われます。 指定したフィルタが使われます。

参照連動項目を表示のみの検索条件とする

動作例

検索条件に参照連動の値を表示させることができます。検索項目としては機能しませんので、確認用という位置づけになります。

図33 検索条件に参照連動の値を表示する

定義方法

サポートモデル定義の全体を図20に示します。「顧客名」と「会社名」は顧客モデルを参照しており、かつ「会社名」は参照連動項目で、検索条件を有効にしています。

図34 サポートモデルの定義

会社名項目について、「検索制御>読み込み専用にする」を有効にします。

図35 読み込み専用の設定

制約

本機能は、次の検索画面には適用されません。

  • カレンダビュー
  • CSV・Excel ダウンロード

参照連動された値を追記する

"固定メッセージの選択・追加による入力方式の実現"をお読みください。

参照連動の数珠つなぎ

他モデルの参照項目の参照先項目が、他モデルの参照項目となっている定義は動作しません。

例えば次のようなケースについて、

他モデルの参照(リストボックス) > 他モデルの参照(リストボックス) > 通常項目
他モデルの参照項目の参照先項目に他モデルの参照項目を指定することはできません。

Wagbyでは、モデル参照は「ID部」を管理しています。そのため上の定義だと、リストボックスに表示される選択肢に内容部ではなくID部が表示されてしまいます。
上記の例ではリストボックス > リストボックスの組み合わせでしたが、リストボックスのみならずラジオボタン、チェックボックス、検索画面いずれの組み合わせも同様に、動作しません。

ただし参照連動は例外です。次の定義を許容しています。

他モデルの参照(リストボックス) > 参照連動 > 通常項目
リストボックス以外にも、ラジオボタン、チェックボックス、検索画面いずれも動作します。
参照連動の参照先が参照連動のケースでも動作します。例) 他モデルの参照(リストボックス) > 参照連動 > 参照連動 > 参照連動 > 通常項目 参照連動は何回繰り返しても動作するようになっています。

検索時の動作

参照連動が数珠つなぎになっている場合でも、検索することができます。例を示します。

参照連動 > 参照連動 > 参照連動 > 文字列型項目
参照連動 > 参照連動 > モデル参照(検索画面)