Dynamics AX Blog - Microsoft Dynamics AX (Axapta) - Page 18

These posts are machine-translated.
Currently, only posts from category »Microsoft Dynamics AX (Axapta)« are displayed Filter entfernen

In recent years, i spent a lot of time in developing in the environment of Microsoft Dynamics AX (formerly Axapta). During this time i created a lot of code, from which I could imagine, that it might be very useful for other AX developers too. But I will present also tips and tricks round the powerful ERP system.

Subscribe to RSS feed of this category

Example of how to use RecordInsertList

A short code example how to can create records in a table very performant way using RecordInsertList. Who does not know RecordInsertList, can learn more about here.

static void HowToUseRecordInsertList(Args _args)
{
    DMOPerfTest DMOPerfTest;
    RecordInsertList RecordInsertList;
    Counter c;
    FromTime fromTime = timeNow();
    
    RecordInsertList = new RecordInsertList(tableNum(DMOPerfTest));
    
    for (c=1;c<=10000;c++)
    {
        DMOPerfTest.clear();    
        DMOPerfTest.AccountNum = int2str(c);
        
        if(DMOPerfTest.validateWrite())
        {
            RecordInsertList.add(DMOPerfTest);
        }
    }
    
    RecordInsertList.insertDatabase();
    
    info(strFmt("Total time consumed: %1", timeConsumed(fromTime, timeNow())));
}

 
 

AX 2012: Show RecId of type LedgerDimension as Display value

In the following code-example a record is selected from table LedgerJournalTrans, than the value of the field LedgerDimension respectively the field OffsetLedgerDimension is converted in the display value, which is display in a so called Segemented entry control.

static void GetLedgerDimensionDisplayValue(Args _args)
{
    DimensionStorage dimensionStorage;
    DimensionDisplayValue DimensionDisplayValue;
    ledgerJournalTrans ledgerJournalTrans = LedgerJournalTrans::findRecId(5637169330, false);
    
    // LedgerDimension
    dimensionStorage = DimensionStorage::findById(ledgerJournalTrans.LedgerDimension);
    DimensionDisplayValue = dimensionStorage.getComboDisplayValue();
    
    info(DimensionDisplayValue);   
     // OffsetLedgerDimension
    dimensionStorage = DimensionStorage::findById(ledgerJournalTrans.OffsetLedgerDimension);
    DimensionDisplayValue = dimensionStorage.getComboDisplayValue();
    
    info(DimensionDisplayValue);
}

Output for example:
5170-10-00AB03---1500-
 


 
 

AX 2012: Determine whether a form is a list page

With the following piece of code you can determine whether a form is a list page.

static void isFormListPage(Args _args)
{
    TreeNode treeNode;
    str formTemplateProperty;
    #Properties;

    treeNode = TreeNode::findNode(@"\\Forms\\CustTableListPage");

    formTemplateProperty = global::findProperty(treeNode.AOTgetProperties(), #PropertyFormTemplate);

    if(formTemplateProperty == #PropertyValueListPage)
    {
        warning("Form is ListPage");
    }
}

If anyone knows a better/more elegant solution, so I would be happy, if he or she contributes via the comment function.


 
 

How to measure the execution time of a function?

Using the function timeConsumed you can check the execution time of a function:

static void stopWatch(Args _args)
{
    FromTime fromTime = timeNow();
    Counter c;

    // Simulating time consuming function     
    for (c=1;c<=100;c++)
    {
        sleep(1000);
    }
   
    info(strFmt("Total time consumed: %1", timeConsumed(fromTime, timeNow())));
}

Result in the Infolog:
Total time consumed: 1 Minute 41 Sekunden


 
 

Add object nodes to a shared project through code

Find below a short example, how to add object nodes to a shared project through code.

static void AddNodeToSharedProject(Args _args)
{
    projectNode projectNode;
    TreeNode treeNode;
    #AOT
    #AOTExport

    projectNode    = infolog.projectRootNode();
    projectNode    = projectNode.AOTfindChild(#expProjectShared);
    projectNode    = projectNode.AOTfindChild('MyProject');
   
    // Add objects
    treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(CustGroup)));
    projectNode.addNode(treenode);

    treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(VendGroup)));
    projectNode.addNode(treenode);
   
    treenode = TreeNode::findNode(#ClassesPath+'\\'+classStr(PriceDisc));
    projectNode.addNode(treenode);
}

The so modified Project will look like this:

Screenshot


 
 

Loop through values of a Base enum

SysDictEnum SysDictEnum = new SysDictEnum(enumNum(SalesStatus));
int i;

for (i=0;i<SysDictEnum.values();i++)
{
    info(SysDictEnum.index2Label(i));
}

 
 

SQL-Error occurs when opening or synchronizing a table

If the follwoing error occurs, when opening or synchronizing a - mostly new created - table

Cannot select a record in DMOTable (DMOTable). The SQL database has issued an error.

the reason could be, that the table contains a field, whose name is a "reserved word" from the database, For example, you cannot use Primary as field Name.


 
 
Pages « 1 ... 15 16 17 18 19 20 21 ... 23 » 

 

 
 
 
Posts of the actual month
April 2025
MoTuWeThFrSaSu
 123456
78910111213
14151617181920
21222324252627
282930 
 
© 2006-2025 Heinz Schweda | Imprint | Contact | German version | Mobile version
In order to provide you with better service, this site uses cookies. By continuing to browse the site, you are agreeing to our use of cookies.