Dynamics AX Blog - Posts from März 2014
These posts are machine-translated.
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 tableIf the follwoing error occurs, when opening or synchronizing a - mostly new created - table
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 ODBCFind below some code-examples, how to Access external databases from Dynamics AX. The examples are based on the following entry in MSDN: 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.");
}
}
|
|
|
|
|
|
|

Find below a short example, how to add object nodes to a shared project through code.
{
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: