親DBと子DBで集計する運用をしていて、子DBのキー項目(プロジェクトコードなど)を変更した際に親DBの集計値を正しく自動更新する方法

子DB側に「変更前のキー項目を保持する管理項目」を用意し、自動処理で『①変更前親の減算』『②変更後親の加算』『③管理項目の更新』の3ステップを実行することで正しく集計値を自動更新できます。

前提条件:親DBと子DBによる集計運用とは

「楽楽販売」では、以下のような親・子関係のデータベース構成でデータを集計・管理する運用が可能です。

  • 親データベース(ヘッダ/集計用DB): プロジェクト管理DB、部門集計DB、請求ヘッダDBなど
  • 子データベース(明細/実績用DB): 発注実績DB、経費明細DB、売上明細DBなど

通常は、子DBにデータが追加・更新された際、キー項目(「プロジェクトコード」や「部門コード」など)で紐づく親DBを特定し、親DB側の合計金額項目に金額を加算・集計します。

キー項目を変更した際に発生する問題(ユースケースと課題)

運用中、子DB側で「間違えて別のプロジェクトコードを指定してしまったため、後からキー項目を変更した」というケースが発生します。

【例:プロジェクトAに紐づいていた100円の明細を、プロジェクトBへ付け替えた場合】

  • 正しい結果: 変更前の「プロジェクトA」から100円を引き(減算)、変更後の「プロジェクトB」に100円を足す(加算)。
  • 失敗しやすい設定: 単に「変更後のプロジェクトB」に100円を足すだけの自動処理になっていると、「プロジェクトA」に古い100円が残ったままになり、システム全体の合計金額が合わなくなってしまいます。

 課題:「変更前の値」が上書きされて参照できなくなる

画面やインポートで子DBの「プロジェクトコード」を「プロジェクトA」から「プロジェクトB」へ変更して保存すると、自動処理が起動した時点のデータはすでに新しい「プロジェクトB」に上書きされています。
そのため、そのままでは「変更前のプロジェクトA(減算対象の親レコード)」をシステムが特定できなくなります。

解決策:「変更前キー保持用」の管理項目を活用する仕組み

この問題を解決するために、子DBに「【管理用】変更前プロジェクトコード」という項目を1つ追加し、以下の3ステップで自動処理を構築します。

  1. 変更前親の特定と減算: 「【管理用】変更前プロジェクトコード」の値で親DBを検索し、古い親レコードから金額を引き算します。
  2. 変更後親の特定と加算: 現在の「プロジェクトコード」の値で親DBを検索し、新しい親レコードへ金額を足し算します。
  3. 管理項目の同期: 最後に「【管理用】変更前プロジェクトコード」の値を現在の「プロジェクトコード」と同値に更新し、次回の変更に備えます。

具体的な設定手順

STEP 1. 子DBに管理用項目を追加する

【設定箇所】 [DB設定] > [基本設定] > 項目設定

対象の子DBに以下の項目を追加します。

  • 【管理用】変更前プロジェクトコード: テキスト(1行)項目(※レイアウト設定で非表示または編集不可に設定することを推奨)

STEP 2. 自動処理パーツを構築する

【設定箇所】 [DB設定] > [機能設定] > 自動処理設定

  1. 【パーツ1:レコード検索パーツ】変更前の親レコードを特定
    ・検索対象DB: 親データベース(例:プロジェクト管理DB)
    ・検索条件: 親DBの「プロジェクトコード」 = 【選択レコード】[子DB]:「【管理用】変更前プロジェクトコード」
    ・絞り込み: 「複数件存在した場合に1件まで絞り込む」にチェック
  2. 【パーツ2(検索1のYESルート):レコード更新パーツ】変更前の親レコードから減算
    ・対象レコード: 【検索レコード(パーツ1)】
    ・更新内容: 合計金額 = (元の値) - 【選択レコード】[子DB]:金額
  3. 【パーツ3:レコード検索パーツ】変更後の親レコードを特定
    ・検索対象DB: 親データベース(例:プロジェクト管理DB)
    ・検索条件: 親DBの「プロジェクトコード」 = 【選択レコード】[子DB]:「プロジェクトコード」
    ・絞り込み: 「複数件存在した場合に1件まで絞り込む」にチェック
  4. 【パーツ4(検索3のYESルート):レコード更新パーツ】変更後の親レコードへ加算
    ・対象レコード: 【検索レコード(パーツ3)】
    ・更新内容: 合計金額 = (元の値) + 【選択レコード】[子DB]:金額
  5. 【パーツ5:レコード更新パーツ】管理用項目を最新化する
    ・対象レコード: 【選択レコード】[子DB](※自分自身)
    ・更新内容: 【管理用】変更前プロジェクトコード = 【選択レコード】[子DB]:プロジェクトコード

設定時のポイント・注意点

  • パーツの配置順序:
    必ず「①変更前の減算」➔「②変更後の加算」➔「③管理項目の更新」の順番で配置してください。順序が崩れると集計金額にズレが生じます。
  • 新規登録時の動作:
    新規登録時にもこの自動処理を実行させることで、初回登録時に「【管理用】変更前プロジェクトコード」へ値が自動で同期され、2回目以降の変更操作に自動対応できるようになります。

 

関連記事

自動処理によるデータ集計や各パーツの詳しい設定手順については、下記マニュアルをご確認ください。

【自動処理活用】業務データの集計

業務DBから集計用DBへ自動処理を使ってデータを連携・集計する基本的な構築方法を解説しています。
【自動処理活用】業務データの集計

自動処理設定:「レコード検索」パーツ

他DBの特定レコードを検索・抽出する「レコード検索パーツ」の詳細な仕様と設定方法です。
自動処理設定:「レコード検索」パーツ

自動処理設定:「レコード更新」パーツ

検索結果のレコードや自分自身のレコードの値を書き換える「レコード更新パーツ」の設定方法です。
自動処理設定:「レコード更新」パーツ

(記事ID:3047)

ご利用にはサービスごとのアカウント登録申込が必要です