子モデルの同時更新

最終更新日: 2022年2月2日
R8 | R9

例と定義方法

「顧客」モデルと「サポート」モデルを例として扱います。
1人の顧客にはN件のサポート情報が紐づいています。このとき、顧客モデルの更新画面で(紐づいている)N 件のサポート情報を更新することができます。

顧客モデルの更新画面(子モデルも同時に更新できる)

定義方法

設定はすべて(子モデルとなる)サポートモデルで行います。親モデル側の設定はありません。

  1. サポートモデルで、外部キーとなる「顧客ID」を検索条件に含めます。
    外部キーを検索条件に含める
  2. 「顧客ID」は、登録時に値をデータベースに保存する設定とします。
    登録時に値をデータベースに保存する設定
  3. 同じく「顧客ID」項目の詳細定義の「検索制御>共通」の条件式を「等しい」とします。
    条件式を等しいとした場合

    注意

    この設定の意図は、外部キーの参照先を特定できるようにすることです。
    これにより、例えば外部キーが文字列型の場合、「部分一致検索」を指定することはできません。

  4. サポートモデルの「画面>一覧更新」より一覧更新画面の「画面を作成する」を有効にします。
    一覧更新画面を作成する
  5. 「画面>一覧更新>外部キーの同時更新機能」設定にて、「同時更新を有効にする」を有効にします。(標準では有効になっています。)
    外部キーの同時更新機能を有効にする

制約

本機能は「一覧更新画面」を使って実現しています。そのため、本機能の仕様と制約は一覧更新画面に準じます。

初期表示数

子モデルの初期表示数を指定することができます。 親モデル(ここでは顧客モデル)の登録画面では、下図のように指定した初期表示数分だけレコードが表示されるようになります。

顧客の登録画面。初期表示数が反映されている。

定義方法

サポートモデルの「画面 > 検索・一覧表示 > 外部キー連携 > 初期表示数」を設定します。

初期表示数の指定

子モデル一覧表示から直接、子モデルの更新画面へ遷移する

子モデルの任意のデータを選択し、更新画面へ直接、遷移することができます。

更新ボタンが用意された例

定義方法

サポートモデルの「画面>検索・一覧表示>外部キー連携」で、詳細ボタンと更新ボタンをそれぞれ有効にします。
(更新ボタンのみ有効にすることもできます。)

詳細ボタンと更新ボタンを有効にする

定義時の注意点

  • 親モデルの詳細表示画面に含まれる子モデル一覧表示では、子モデルの「検索・一覧定義」のボタン設定は反映されません。ここに用意されたボタン設定を利用してください。
  • 子モデル一覧表示で「詳細」ボタンが非表示の場合、行クリックも無効です。(マウスオーバーによって色は変わりますが、クリックしても詳細画面へ遷移しません。)
  • 子モデルの詳細画面や更新画面を用意しない場合、これに対応してボタンも表示されません。
  • 詳細表示および更新ボタンの「表示条件」に含めることができる項目は、子のモデルになります。これは、子の各レコード毎に条件を指定するためです。(一方で、「子モデル全体を表示するかどうか」という表示条件は、親モデルの値を使います。)
  • ボタン名は固定表記のみとなっています。ここに式を指定することはできません。

1つの親に複数の子を紐付ける

外部キーによるモデルの連携は、複数指定することができます。このとき、子モデル同時更新も動作します。

1つの親モデルに複数の子モデルを定義する

コピー登録

外部キー関係にあるモデルにおいて、コピー登録を行うと親モデルに紐づく子モデルもすべてコピーされます。

図12では、顧客モデルにコピー登録機能を用意しました。 コピーボタンをクリックすると、コピー登録画面に遷移します。

顧客モデルのコピー登録ボタン

顧客モデルのコピー登録画面では、関連するサポートのデータがある場合、これも同時にコピーされていることが分かります。

顧客のコピー登録画面。関連するサポートのデータもコピーされている。

定義方法

  1. 顧客モデルでは、「検索・一覧表示>ボタン表示>コピー登録ボタン」を有効にします。
    入力欄にボタンとして表示させたいテキストを入力することで、有効になります。
    コピー登録ボタンを用意する
  2. サポートモデルでは、「一覧更新 > 外部キーの同時更新機能 > 同時更新を有効にする」および「親モデルのコピー時に子モデルもコピーする」を設定します。
    (標準では「親モデルのコピー時に子モデルもコピーする」は有効になっています。)
    親モデルのコピー時に子モデルもコピーする設定

コピー登録画面で表示のみを行う

コピー登録画面では、子モデルを表示のみとすることができます。

実行すると図のようになります。

コピー登録画面では、子モデルは表示のみとなる

定義方法

  1. "コピー登録画面で表示のみを行う" 設定を有効にします。
    コピー登録画面で表示のみを行う
  2. 親モデルの主キーは、コピー登録時に値をコピーするようにしてください。(標準では、この設定は有効になっています。)
    親モデル主キーの「コピー登録時に値をコピーする」を有効にする

注意

  • 表示のみの子モデルは、コピー登録されません。
  • 親モデルの主キーがコピーされていない(手順2の設定を行っていない)場合、入力エラーなどで画面が再描画されたときに子モデルが表示されません。

複数の外部キー子モデルをもつ場合

二つ以上の外部キー子モデルをもつ親モデルでも、本コピー機能は動作します。

スクリプトを使って子モデル毎に異なる初期値を設定する

"親子モデル同時更新機能で親モデル登録時、子モデル毎に異なる初期値を設定する"をお読みください。

子モデルデータのページング表示9.1.0

親子モデル同時更新画面の子モデル一覧更新にページングを設定できます。 この設定を有効にすることで、子モデルのデータ量が多い時のパフォーマンス向上につながります。

親モデルの詳細表示画面

ページングの最大表示件数は、子モデルの一覧更新画面で最後に選択した数が適用されます。

子モデル一覧更新画面で表示数を指定できる

定義方法

  1. この設定を有効にするには、親モデルの表示設定が「CSSレイアウト (CSS layout)」である必要があります。
    親モデルの設定を確認してください。
    親モデルの設定を確認する
  2. 子モデルの「画面 > 一覧更新 > 外部キー連携」より、「ページングを有効にする」にチェックを入れます。
    ページングを有効にする
  3. 子モデルの「画面 > 一覧更新 > 一覧更新画面 > 同時表示数のパターン(数値を指定)」に最大表示数を入力します。
    下図のように複数の数値をコンマ区切りで入力することで、子モデルの更新画面でアプリケーション上で最大表示数を変更できるようになります。(図20参照)
    ページングを有効にする

    ワンポイント

    コンマ区切りによる最大表示数の変更は、親子モデル同時更新画面には反映されません。

ワンポイント

ページングの設定は親モデルの詳細表示画面でも行えます。
詳しくは「親子関係を定義する > 子モデルデータのページング表示」をお読みください。

仕様・制約

1. コピー登録の場合の子モデルの一覧更新の削除処理は、実際には削除でなく、コピー登録の扱いとなります。このため、削除のチェックボックスはコピーの有無の選択となるため、常に有効となっています。同様に更新処理についても、コピー登録時に値を修正して保存する動作と同様なため、更新も可能としています。