2017-05-12 24 views
0

ジャーナルトランザクション画面のグラフオブジェクトを作成し、データを入力するカスタマイズプロジェクトがあります。これが発生した場合、すべてのエントリをロールバックする能力に関するエラーを処理する最良の方法を知りたいと思います。すべてのエントリ(挿入)は(いくつかのバッチのために)完了するまでエラーが発生した後にトランザクションをロールバックする方法

 Batch batch; 
     GLTran tran; 

     if (gltran.BatchNbr != lastbatchnbr) 
     { 
      batch = new Batch(); 
      batch.BranchID = branchID; 
      batch.Description = "InterCo JE from " + osd.String01 + "Module AP Batch " + gltran.BatchNbr; 
      batch.FinPeriodID = gltran.FinPeriodID; 
      jegraph.BatchModule.Insert(batch); 
      jegraph.Persist(); 
     } 



     tran = new GLTran(); 
     tran.AccountID = accountID; 
     tran.SubID = subID; 
     tran.TranDate = gltran.TranDate; 
     tran.RefNbr = gltran.RefNbr; 
     tran.CuryDebitAmt = gltran.DebitAmt; 
     tran.CuryCreditAmt = gltran.CreditAmt; 

     jegraph.GLTranModuleBatNbr.Insert(tran); 
     jegraph.Persist(); 

私は存続すべきではない - と何とかロール:ここ

は、私は(いくつかのコード示されていないとの)行を挿入していますかの抜粋です永続化が完了する前に戻ってきますか?

コード例が役に立ちます。ありがとう。

答えて

1

エラーが受信されない限り、すべての永続化が同時に発生するようにするには、永続化コードをトランザクションにラップする必要があります。したがって、以下に示すように、PXTransactionScopeを使用して、同じトランザクション内にあるコード(2つの別々のもの)をラップすることができます。

エラーを受信した場合、それは自動的にロールバックされますかts.Complete(呼び出すことはありません
using (PXTransactionScope ts = new PXTransactionScope()) 
{ 
    // Persisting code here... 

    ts.Complete(); 
} 

関連する問題