レコードレベルには、前処理と後処理があります。
レコード前
[レコード前]では、レコードがディスクから読み込まれてから、ユーザが対話処理を始める直前までに実行される各レコードに対する初期化処理を定義します。[レコード前]には、レコードの初期設定段階で使用される処理コマンド(そのパラメータを処理の開始前にレコード上で実行する必要がある手続き的な処理)を定義します。
レコードループ
オンラインタスクではユーザが参照している各レコードについて、以下に説明する「レコード初期化」処理が実行されます。また、バッチタスクでは、処理対象となる全レコードについて、[データビュー]エディタのメインソース定義の[インデックス]特性で指定されたインデックスの順番あるいは[ソート]テーブルに指定された順番で、最初のレコードから最後のレコードまで、1レコードずつ処理が実行されます。
データビューの最初のレコードに位置付け、レコードを取得します。
注意: |
オンラインタスクでは、レコードが見つからない場合、作成モードでタスクがオープンされます。[タスク特性]の[登録]特性が「Yes」に設定されている場合のみこのように動作します。「No」の場合は、タスクは終了します。 |
[代入]特性はすべての変数項目で評価されます。タスクが登録モードの場合、カラムの[代入]特性も評価されます。
データソースに対するすべてのリンクが、現在のレコードに対して実行されます。
[タスク特性]の[チェック時期]特性が、「B=前置」に設定されている場合、Magic xpaは[タスク終了条件]特性を評価します。
レコードループが実行されます。つまり、この時点からデータソースカラムを処理することができます。
[レコード前]ロジックユニットの処理コマンドが実行されます。
レコード後
[レコード後]は、エンドユーザーがレコードをコミットした後、そして、レコードがデータソースに書き込まれる前に実行されます。
[レコード後]には、次のような処理を定義します。
バッチタスクの場合 …… データビューのレコードに関する処理
オンラインタスク/リッチクライアントタスクの場合 …… 参照と変更が行われたレコードに関する処理
レコードがユーザの入力などで変更されていない時には、通常、[レコード後]が実行されません。レコードが変更されていない場合にも[レコード後]を実行させたい場合には、[タスク特性]の[強制レコード後]特性で指定できます。
レコード終了処理
オンラインタスクやインタラクティブなリッチクライアントでは、ユーザが参照している各レコードについて、以下に説明する「レコード終了」処理が実行されます。また、バッチタスクや非インタラクティブなリッチクライアントでは、処理対象となる全レコードについて、[タスク特性]の[インデックス]で指定されたインデックスの順番あるいは[ソート]テーブルに指定された順番で、最初のレコードから最後のレコードまで、1レコードずつ処理が実行されます。
[レコード後]の処理が実行されます。
タスクがバッチタスクまたは非インタラクティブなリッチクライアントの場合 …… [レコード後]は常に実行されます。レコードが変更されていない場合でも常にデータベースへの書き込みを行います。
タスクがオンラインまたはインタラクティブなリッチクライアントの場合 …… 現在の論理レコードが変更されている時に限って、[レコード後]が実行されます。
[タスク特性]ダイアログの[強制レコード後]特性を使用して強制的に実行させることができます。
現在のレコードは、次のような操作が行われた場合、変更されたと解釈されます。
エンドユーザが、キーボードやマウスを使用し別のレコードに移動した場合
[オプション]メニューでタスクモードを変更した場合
レコードの削除が実行された場合
エンドユーザの操作や[タスク終了条件]特性によってタスクの実行が終了した場合
[選択テーブル]特性が「Yes」に設定されたタスクで、エンドユーザがEntertを押下した場合。
[強制レコード後]特性が、「Yes」に設定されている場合。
必要に応じてレコード削除を実行します。
タスクの[チェック時期]特性が「後置」に設定されている場合、[タスク終了条件]が評価された場合。