加算 (デフォルト:No)

Magic uniPaaSでは、項目の加算更新機能が可能です。これは、更新される式の内容が評価され、特定の規則に基づいて更新対象の項目に加算したり、減算したりするものです。

加算更新を使用する場合は、[レコード後]に[項目更新]処理コマンドを定義してください。この場合、レコードが編集された後に一回だけ[項目更新処]理コマンドが実行されます。

親タスクやリンクレコードのカラムに合計値を格納するような場合に加算更新を使用することができます。これらの場合に、サブタスクのレコード処理が実行された後に親レコードの処理が取り消されることを防止するために、[強制更新]特性を「Yes」に設定してください。

ここでは、加算更新を行なうかどうかを指定します。指定できる値は、以下のいずれかです。

  1. タスクの現在の処理モードが「登録モード」の場合、更新式の値が更新項目の値に加算されます。

  2. タスクの現在の処理モードが「修正モード」の場合、まず、更新項目の値から更新式の以前の値(a)が差し引かれ、その後、更新式の新規の値(b)が更新項目の値に加算されます。
    上記の説明のうち、更新式の以前の値(a)とは、レコードが読み込まれた後、更新式で指定されている項目に値が入った時に更新式が評価され、その結果、返った値をいいます。また、更新式の新規の値(b)とは、[項目更新]処理コマンドが実行された時に更新式が評価され、その結果返った値をいいます。

  3. タスクの現在の処理モードが「削除モード」の場合、更新項目の値から更新式の値が差し引かれます。

  4. 更新項目としてリンクテーブルの項目が指定されており、エンドユーザがレコードを操作している間にリンク条件が変更されたことにより、リンクレコードが新たに読み込まれた場合、次の処理が行われます。この処理は、データの整合性の維持のための処理です。
    まず、以前のリンクレコードの項目(更新項目となっている項目)の値から更新式の以前の値が差し引かれ、その後、新規のレコードの項目(更新項目となっている項目)の値に更新式の新規の値が加算されます。

    たとえば、オンラインタスクの受注入力プログラムが修正モードで実行している場合、ユーザは顧客番号を変更するとします。この番号は、受注総額を計算するために顧客ファイルとのリンク条件として使用されているものとします。この場合、Magic uniPaaSが[項目更新]処理コマンドを実行すると、受注総額の変更の有り無しに関わらず、現在の受注データから更新前の顧客のレコードを差し引き来、更新後の顧客レコードを追加します。

  5. 通常は、加算更新では[項目更新]処理コマンドの加算式に、定数を使用しないでください。タスクが「修正モード」の場合、このような定数は加算や減算の処理によってキャンセルされます。しかし、そのような式はタスクが「登録モード」や「削除モード」の場合は、正しく動作します。たとえば、定数"1"が加算更新の更新式で使用され、サブタスクのデータビューのレコード数のカウンターとして使用する場合、この値は、親タスクで定義されたデータ項目か、現在のタスクのリンクレコードによて定義された項目で維持されます。サブタスクが「修正モード」である限り、カウンターの変更は発生しません.しかし、サブタスクのデータビューからレコードが削除されたり、レコードが追加された場合、カウンターは正しく更新されます。

加算更新の例

[仕入ファイル]と[商品ファイル]があり、[商品ファイル]は[仕入ファイル]にリンクされているとします。[商品ファイル]には[在庫]項目があり、ここに在庫数が格納されます。また、[仕入ファイル]には[数量]項目があり、この[数量]項目を使用して[在庫]項目の値を更新するとします。ここで、[在庫]項目を項目A、[数量]項目を項目B とします。この場合、項目A を項目B で更新することになります。更新は、加算更新で行います。この設定では、処理モードによって処理は次のようになります。[在庫]項目には、当初、「30」(A1)が入っているものとします。

以上のように、加算更新では、自動的にデータの整合性が維持されるため、整合性維持のための処理は特に必要ありません。

関連トピック: