1

VendOpenTrans にボタンがあり、そのクリックされたメソッドを実装しました。

これでうまくいくと思ったのですが、例外が発生して AX が閉じてしまいました。

void clicked()
{
   LedgerJournalTrans ledgerJournalTrans;
   VendTransOpen vto;

   super();

   switch (originator.TableId)
   {
      case tableNum(LedgerJournalTrans):
          ledgerJournalTrans = element.args().record();
    }



for ( vto = vendTransOpen_ds.getFirst(0); vto; vto = vendTransOpen_ds.getNext() )
{
    //vendTransOpen_ds.markRecord(vto, 1);
    if (vto.RecId)
    {
        if (manager.getTransMarked(vto) == NoYes::No)
        {
           select Invoice from vendTrans
               where vto.AccountNum == vendTrans.AccountNum &&
                 vto.RefRecId == vendTrans.RecId;

              if (ledgerJournalTrans.Invoice == vendTrans.Invoice)
              {
                // Mark transaction for settlement
                 showError = NoYes::No;
                 manager.updateTransMarked(vto, NoYes::Yes);
                 showError = NoYes::Yes;
              }
          }
      }

    // Update dynamic controls & refresh form as auto-redraw is not triggered
     element.updateDesignDynamic();
     element.redraw();

 }
vendTransOpen_ds.refreshEx(-2);
}

次の行をコメントアウトすると、基本的にグリッド内のすべての行をマークして機能します。

//select Invoice from vendTrans
     //where vto.AccountNum == vendTrans.AccountNum &&
          //vto.RefRecId == vendTrans.RecId;

//if (ledgerJournalTrans.Invoice == vendTrans.Invoice)
//{
     // Mark transaction for settlement
        showError = NoYes::No;
        manager.updateTransMarked(vto, NoYes::Yes);
        showError = NoYes::Yes;
//}

したがって、より明確にするために、残っているのは次のとおりです。 manager.updateTransMarked(vto, NoYes::Yes);

このように、それは機能します。私が見る限り、その選択を追加すると何かが起こります。

デバッグを使用して確認できましたが、forループによって例外がスローされたと思います..

これについてヒントを得る機会はありますか?

4

1 に答える 1