Magic 新連載スタート
から 1198 日経過

Magic 連載購読

Magic 連載購読コーナーはこちらです。

ログインには購読のお申込みと Google へのアカウント登録が必要です。

Google のアカウントは Gmail アドレスである必要はありません。現在、お使いの会社のメールアドレスや Yahoo! メール、Hotmail などのメールアドレスでもご使用になれます。

連載購読コーナーへのログイン手順のヘルプはこちらです。

Google サイト

この Web サイトは、Google 社の Google サイト の機能を使用して構築されています。

Google サイトの日本語版は2008年10月22日にリリースされました。

Google サイトを利用してのサイトの構築は、お気軽にご用命ください。

ドメイン名の取得から DNS の設定、Web サイトのデザインまで、包括してお引き受けいたします。

記事概要 Magic V10 で作るイベントドリブン型プログラム

2009/10/07 23:36 に Masanobu Tanda が投稿   [ 2010/09/24 2:28 に更新しました ]
第19回 遅延トランザクションを利用した、処理の取消

 今回はトランザクションにまつわる話題を取り上げます。トランザクションと聞くと、障害時の復旧対策がまず思い付きますが、実はトランザクションの機能はプログラムのロジックの一部として利用されることも多いのです。

 例えば、受注伝票入力のプログラムがあったとして、オペレータが受注伝票の入力途中で入力作業をキャンセルしたいと思ったときの場面を想定します。

 通常、受注入力プログラムの構造は親子タスクの構造となっており、ヘッダ・フッタ部分の入力と、明細入力部分が分離しています。このとき、明細入力を終えて親タスクのヘッダ部分に戻ったときに、取消キーである「F2」キーまたは V10 以降では「Ctrl + F2」キーを押すと、親タスクは入力が取り消されてレコードは作成されませんが、子タスクでは明細レコードがゴミデータとしてテーブルに残ってしまいます。

 たいていの場合はこれに対処するために明細行の削除バッチを作成して、親レコードの入力がキャンセルされたら子レコードはバッチで削除するというロジックを組み込むかと思うのですが、実はトランザクションの機能を利用すればバッチタスクを作成しなくても、簡単に子レコードの入力をキャンセルすることができるようになるのです。

 (以降、本編に続きます。本編ご購読のお申込みはこちらです

Terms  |  Report Abuse  |  Print page  |  Powered by Google Sites