子モデルの同時更新

最終更新日: 2024年8月24日
R8 | R9

例と定義方法

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

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

定義方法

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

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

    注意

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

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

制約

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

初期表示数

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

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

定義方法

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

※ 固定の数字を1つだけ指定できます。コンマ区切りで複数の数値を指定することはできません。

初期表示数の指定

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

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

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

定義方法

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

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

定義時の注意点

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

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

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

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

コピー登録

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

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

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

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

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

定義方法

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

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

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

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

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

定義方法

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

注意

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

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

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

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

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

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

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

親モデルの詳細表示画面

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

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

定義方法

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

ワンポイント

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

親子モデル同時更新画面の場合

子モデルデータのページング機能は親子モデル同時更新画面でも利用できます。ただし最大表示数の設定は次の仕様となります。

  • 表示行数は、子モデルの "検索・一覧表示 > 外部キー連携 > 最大表示数" に指定した数で固定されます。この欄は数字を一つだけ指定できます。コンマ区切りによる複数の数字を設定することはできません。つまり最大表示数をリストボックスによって変更する機能は利用できません。
  • 上記の設定値が空白の場合、20行で固定されます。
  • レイアウト専用項目を用いて親子モデル同時更新の子の部分を任意の位置に配置すると、子モデルデータ部のページング機能が動作しません。この制約は将来のWagbyで解消するようにします。

仕様・制約

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