Dynamics AX Blog - Dynamics AX 2012 - Page 18

RSS-Feed of this version
AX 2012: Determine whether a form is a list pageWith 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: |
Add object nodes to a shared project through codeFind 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: |
Loop through values of a Base enumSysDictEnum 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."); } } |
|
|
|
|
|
|
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.
Output for example:
5170-10-00AB03---1500-