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

明細行の小計・中計の計算について

コメント

19件のコメント

  • nkmt

    今、編集したレコードは、まだ確定していないので、サブタスクやサブPGから自分自身のレコードを読んでも、まだ古い内容のままだったりしますね。

    レコード後処理では、V_要再集計 といったフラグにTrueをセットして、レコード前処理で、そのフラグがTrueなら、小計・中計更新バッチタスクを呼び、その後、ビュー再表示などいかがでしょうか?

  • KM

    nkmtさん

     

    同じくレコード前処理で呼び出す方法で考えていたのですが、

    フラグをTrueにするタイミングを、明細の数量・金額が変更された時にしていたため、うまくできておりませんでした。

    ご教授いただいた通り、レコード後処理でTrueにすると思い通りの動きになりました。

    ありがとうございました。

  • Tanda

    KMさん、

    レコード後処理を通過する前にデータを保存したいような場合には、「レコード書込」というイベントが用意されています。

    ヘルプを「レコード書込」で検索すると使い方が出てきますよ。

  • nkmt

    オンラインタスクで、メモリWFを編集し、レコード書き込み
    → 子タスクでそのメモリWFをメインソースにして読み込み といった事を試してみたいと思います。
    tandaさんありがとうございました。

  • Tanda

    nkmtさん、

    「レコード書込」イベントは比較的新しい内部イベントですので、まだご存じないかたも多いと思います。

    とても便利ですので、皆さんもぜひ使ってみてください。

     

  • KM

    tandaさん

    レコード書込イベントをあまり理解していなかったのですが、改めてヘルプを読むと、どういう処理をしているのか理解できました。

    活用していこうと思います。ご教授いただきありがとうございました。

  • nkmt

    オンラインタスクで、メモリWFを編集し、レコード書き込み
    → 子タスクでそのメモリWFをメインソースにしたオンラインタスク
    で、今の所、上位オンラインタスクで入力した値が子タスクで表示されません。
    私は使いこなせておりません。

  • Tanda

    nkmtさん、

    「レコード書込」イベントは、内部的にやっていることは「トランザクションのコミット」です。「Memory」はトランザクションに対応していなかったと。。。

    ワークファイルを使うという所作を、トランザクションに変更されることをお勧めします。遅延トランザクションは本当に便利ですよ。

     

  • nkmt

    ヘルプを見ましたが、以下のような使い方はNGですね。
     オンラインタスクで、メモリWFを編集し、レコード書き込み
      → 子タスクでそのメモリWFをメインソースにしたオンラインタスク

  • nkmt

    承認待機中と表示されました。初めて目にしました。

  • Tanda

    nkmtさん、

    AIで、「フォーラムの荒らし」と判定されると、「承認待機中」になるようです。。。

  • nkmt

    KMさん、tandaさん、以下で成功しました。
    オンラインタスクで別レコードへ遷移することなく、編集していたレコードの値を
    子タスクで編集していた更新後の内容の把握ができました。

  • Tanda

    nkmtさん、

    遅延トランザクションのコミットはなされるんですね。物理トランザクションはないわけです。

    考えてみたら、もっともですね。

  • Tanda

    nkmtさん、

    その理屈でいくと、Memoryはトランザクションなしでもレコード書込は効くかもです。SQLではトランザクションなしでの書き込みというのはあり得ませんので。

  • Tanda

    結局のところ、

    1. Pervasive + Memory
    2. SQL + 遅延トランザクション

    のどちらかの選択が定石になりますね。

  • nkmt

    レコード書き込みイベントは(苦し紛れに)以前使った事がありましたが、ヘルプやtandaさんのアドバイスも再度拝見して理解したいと思います。^^;

  • Tanda

    nkmtさん、

    はい、「レコード書込」は便利ですが、一旦書き込んだあとは、ロールバックやアボートはできなくなりますので、その点が要注意です。

  • Tanda

    訂正です。

    1. Pervasive + Memory(遅延トランザクションがなかった頃)
    2. Pervasive + 遅延トランザクション
    3. SQL + 遅延トランザクション

    のいずれかの選択が定石になりますね。

     

  • KM

    nkmtさん tandaさん

    たくさんの情報ありがとうございます。

    私もnkmtさんと同じようなサンプルプログラムでテストしてみましたが、成功しました。

    これで思い通りの動きができます。ありがとうございました。

     

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