Dynamics AX Blog - Posts from March 2014

These posts are machine-translated.
Currently, only posts from »March 2014« are displayed Filter entfernen

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.


 
 
 

Access external database using ODBC

Find below some code-examples, how to Access external databases from Dynamics AX.

The examples are based on the following entry in MSDN:
How to: Connect to an External Database from X++ Code [AX 2012]
 

Read access (SELECT)

// X++, Main method in a class.
static public void Main(Args _args)
{
    LoginProperty loginProperty;
    OdbcConnection odbcConnection;
    Statement statement;
    ResultSet resultSet;
    str sql, criteria;
    SqlStatementExecutePermission perm;
    ;

    // Set the information on the ODBC.
    loginProperty = new LoginProperty();
    loginProperty.setDSN("ExternalDB_32bit");
    loginProperty.setDatabase("ExternalDatabaseName");

    //Create a connection to external database.
    odbcConnection = new OdbcConnection(loginProperty);

    if (odbcConnection)
    {
        sql = "SELECT * FROM items;";

        //Assert permission for executing the sql string.
        perm = new SqlStatementExecutePermission(sql);
        perm.assert();

        //Prepare the sql statement.
        statement = odbcConnection.createStatement();
        resultSet = statement.executeQuery(sql);

        //Cause the sql statement to run,
        //then loop through each row in the result.
        while (resultSet.next())
        {
            //It is not possible to get field 3 and then 1.
            //Always get fields in numerical order, such as 1 then 2 the 3 etc.
            print strFmt("%1 - %2", strRTrim(resultSet.getString(1)), strRTrim(resultSet.getString(2)));
        }

        //Close the connection.
        resultSet.close();
        statement.close();
    }
    else
    {
        error("Failed to log on to the database through ODBC.");
    }
}

 
 
 

 

 
 
 
Posts of the actual month
March 2014
MoTuWeThFrSaSu
 12
3456789
10111213141516
17181920212223
24252627282930
31 
 
© 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.