[タスク前]が実行された後、データビューレコードは以下のように処理されます。
レコード前
データビューの最初のレコードに位置付け、レコードを取得します。
注意: |
オンラインタスクやインタラクティブなリッチクライアントタスクでは、レコードが見つからない場合、「登録モード」でタスクがオープンされるかタスクが終了します。この動作は、[タスク特性]の[空のデータビュー許可]特性の設定内容によって決まります。 |
[代入]特性はすべての変数項目で評価されます。タスクが登録モードの場合、カラムの[代入]特性も評価されます。
データソースに対するすべてのリンクが、現在のレコードに対して実行されます。
注意: |
リッチクライアントタスクの場合、タスクがサーバ上で実行する度に、ユーザが現在どのレコード上に位置付けているかを、(サーバ側では把握できないため)Magicエンジンに知らせる必要があります。このような場合が発生すると、タスクを抜ける度に、サーバはキャッシュ/データベースから再度レコードを検索します。 |
[タスク特性]の[チェック時期]特性が、「B=前置」に設定されている場合、Magic xpaは[タスク終了条件]特性を評価します。
レコードループが実行されます。つまり、この時点からデータソースカラムを処理することができます。
[レコード前]ロジックユニットの処理コマンドが実行されます。
コントロールの処理
インタラクティブなタスクでは、各レコードに対しアクセスされた[コントロール]ロジックユニットが実行されます。エンドユーザは、キーボード(TabまたはShift+Tab)を使用するか、マウスでコントロールをクリックすることで、コントロールにアクセスすることができます。
コントロール前 …… エンドユーザによってアクセスされる各コントロールに対し、[コントロール前]ロジックユニットの処理コマンドが実行されます。
コントロール検証 …… [コントロール検証]ロジックユニットが設定されたコントロールからカーソルが抜けたり、(高速モードの場合)コントロールをスキップして通過した場合、[コントロール検証]に定義された処理コマンドが実行されます。このコントロールをスキップして異なるコントロールにカーソルが移動した場合、高速モードでスキップされたことになります。
コントロール後 …… カーソルがコントロールから抜けた場合、[コントロール後]が実行されます。エンドユーザが別のコントロールにカーソルを移動させたり、(別のレコードに移動することで)レコード処理を終了させたり、タスクを終了した場合に、このトリガが発生します。
項目の処理
オンラインタスクやリッチクライアントタスクの場合、項目の値が変更されると[項目変更]ロジックユニットが実行されます。
レコード後
オンラインタスクやリッチクライアントタスクとブラウザタスクでは、修正されたレコードに対してのみ[レコード後]ロジックユニットが実行されます。
バッチタスクの場合は、常に[レコード後]が実行されます。
オンラインタスクやリッチクライアントタスクとブラウザタスクでは、エンドユーザがレコードの処理を抜けた時点で[レコード後]ロジックユニットが実行されます。これは以下のような場合に発生します。
キーボードまたはマウスのどちらかを使用して、エンドユーザが別のレコードに移動した場合。
エンドユーザは、タスクモード(修正、登録、照会)を変更した場合。
エンドユーザがレコードを削除した場合。
エンドユーザの操作やタスク終了条件が評価されたことによって、タスクの実行が終了した場合
タスクの処理を終了する場合、レコードループが最初に終了します。
レコードの終了処理
レコードが修正された場合、レコードが保存され[レコード後]ロジックユニットが実行されます。レコードが修正されない場合は、これらの処理は実行されません。
次にタスクの終了処理に移ります。
注意: |
リッチクライアントタスクの場合、サーバへのアクセスがあるたびに、サーバは現在のデータビューレコード(ユーザがレコード間で移動しかどうかを、サーバはわからないため)上で再位置付けが必要になります。この時、サーバは現在のレコードを読み込み、リンクを再評価するために、もう一度キャッシュ/データベースにアクセスします。 変数項目 オンラインタスクの場合、テーブル内の変数項目を更新すると、現在のレコードだけが新しい値で更新されます。 リッチクライアントタスクの場合は、全てのレコードが新しい値で更新されます。変数項目の[代入]特性に値が設定されていない場合にのみ、このような動作になります。[代入]特性に値が設定されている場合、他の全てのレコードに対してこの値が表示されます。 以下の例のように、「変数項目」は、[レコード前]で更新される変数項目です。オンラインタスクの場合は、現在パークしているレコードだけが更新されます。 |