メインコンテンツへスキップ

子タスクから親タスクの値参照(メモリテーブル)

コメント

5件のコメント

  • Tanda

    akiraさん、

    データを更新したあと、別階層のタスクからその更新内容を参照しようとした場合、トランザクションキャッシュの中身を更新してやらないと、新しい値が参照できない場合がありますよ。

    トランザクションキャッシュを更新するには、「画面再表示」とか「ビュー再表示」とかのイベントを発行してやるといいですね。

    「画面再表示」と「ビュー再表示」の違いは、こちらでも詳しく解説しています。

    ●Magic連載購読コーナー
    第157回 画面再表示とビュー再表示の違い(2021年3月31日)

  • Tanda

    akiraさん、

    あと1点ですが、バッチをコールする前に「レコード書込」イベントを発行して、明示的にデータを上書き更新してやるという方法もありますね。

    「レコード書込」イベントは、トランザクションの最中であっても、強制的にDBを更新してくれるというすごいパワーを持っています。ただし、これを使用するとトランザクションのロールバックはできなくなります。

  • akira

    tanda様

    コメントありがとうございます。

    バッチタスクのコール前に「画面再表示」イベントを発行し想定通りの動作となりました。

    だだ「画面再表示」イベントを発行した影響なのか親タスクで次行へ移動時に最初の項目へ

    カーソルが位置づけられるため更に改修が必要となりました。

  • Tanda

    akiraさん、

    あるいは、遅延トランザクションを使わずに、物理トランザクションのダーティリードを使うという手もありますね。

    ダーティリードはトランザクション中のデータも読み取ることができます。MagicはデフォルトでダーティリードがONになっています。

  • Tanda

    akiraさん、

    失礼、ご質問をもう一度見るとリッチクライアントになっていますね。リッチクライアントでは物理トランザクションは使えないです。

サインインしてコメントを残してください。