Markierte Datensätze eines Formulares verarbeiten/iterieren

Um in Dynamics AX die markierten Datensätze einer Formular-Datenquelle (FormDataSource) zu verarbeiten/iterieren kann folgendes Code-Beispiel helfen:

void markSelected()
{
    inventTrans inventTransSelected;
    inventTrans inventTrans4Update;

    ttsbegin;
    inventTrans4Update.setTmpData(inventTrans);    //DIES IST NUR BEI TEMPORÄREN TABELLEN NOTWEDNIG
    for (inventTransSelected = inventTrans_ds.getFirst(true) ? inventTrans_ds.getFirst(true) : inventTrans_ds.cursor();
         inventTransSelected;
         inventTransSelected = inventTrans_ds.getnext())
    {
        select firstonly forUpdate inventTrans4Update
        where inventTrans4Update.RecId == inventTransSelected.RecId;

        inventTrans4Update.Marked = NoYes::Yes;
        inventTrans4Update.update();
    }
    ttscommit;

    inventTrans_ds.executeQuery();
}

Im Beispiel werden die markierten Datensätze der Tabelle InventTrans durchlaufen und ein Feld Marked auf TRUE aktualisiert.

In Dynamics AX 2012 kann übrigens statt dessen auch die Klasse MultiSelectionHelper dafür verwendet werden.

void markSelected()
{
    MultiSelectionHelper = MultiSelectionHelper::construct();
    MultiSelectionHelper.parmDatasource(inventTrans_ds);

    InventTransSelected = MultiSelectionHelper.getFirst();
    while(InventTransSelected)
    {
         // ...do something...
       
        InventTransSelected = MultiSelectionHelper.getNext();
    }
}

Mir ist allerdings mehrmals aufgefallen, daß nicht in allen Fällen beide Varianten zum selben Ergebnis führen - weshalb das so ist, weiß ich derzeit leider nicht. Hier hilft nur ausprobieren!

Außderdem muss man darauf achten, daß in Dynamics AX 2012 die neue Eigenschaft AutoRefreshData eines Buttons bei Verwendungen des oben beschriebenen Codes deaktiviert sein sollte. Mit aktivierter Eigenschaft funktionieren beide nicht!

Dieser Beitrag bezieht sich auf die Versionen:
Dynamics AX 2012, Dynamics AX 2009

 
 

 

 
 
 
Beiträge des aktuellen Monats
November 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
252627282930 
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu