Skip to main content

Common Form Methods in MSD Axapta

Common Form Methods in Axapta

Only few of the form methods are needed in daily use. Having a basic knowledge of the execution order of these methods will help you a lot when starting making your modifications. The following methods are executed in the listed order when a form is opened and closed:
init() ► ds init() ► run() ► ds executeQuery() ► canClose() ► close()
1. FormRun.init() is the first method called. The super() call in FormRun.init() will call FormDataSource.init() for each data source used in the form query.
2. The super() call in FormRun.run() will call FormDataSource.executeQuery() for every data sources.
3. When closing the form FormRun.canClose() will validate whether the form may be closed, and if true FormRun.close() is called.
These are the most important methods executed when a form is opened and closed. Other methods are executed in the opening and closing sequences such as loading application user settings. However normally you will only need to override the listed methods.
For each data source in your form query, the following sequence will be triggered by executeQuery() when the form is opened:
ds executeQuery() ► refresh() ► active()
1. The data source method executeQuery() will fetch all records for the current data source and afterwards call refresh().
2. Refresh() is updating records fetched, and is normally not overridden. If you are inserting, updating of deleting records shown in a form from X++, refresh() can be called to have the changed data shown.
3. When opening the form, active() is executed for the current record. You can use active() for setting access restrictions for controls. Active() is called each time a record is selected.

Popular posts from this blog

Code to get customer Primary Address in Ax 2012

Below Code to get customer Primary Address in Ax 2012. CustTable custTable_P; DirPartyTable dirPartyTable_P; DirPartyLocation dirPartyLocation_P; DirPartyLocationRole dirPartyLocationRole_P; LogisticsLocation logisticsLocation_P; LogisticsLocationRole logisticsLocationRole_P; LogisticsPostalAddress logisticsPostalAddress_P; LogisticsPostalAddress primaryAddress_P; while select custTable_P where custTable_P.AccountNum =='ED_01029' join dirPartyTable_P where dirPartyTable_P.RecId == custTable_P.Party join dirPartyLocation_P where dirPartyLocation_P.Party == custTable_P.Party && dirPartyLocation_P.IsPrimary==NoYes::Yes join dirPartyLocationRole_P where dirPartyLocationRole_P.PartyLocation == dirPartyLocation_P.RecId join logisticsLocationRole_P where logisticsLocationRole_P.RecId == dirPartyLocationRole...

Code to get Invoice settlement data for customer in ax 2012

This is simple Code to get Invoice settlement amount data for customer payment in ax 2012. This data is after posting of data. select sum(SettleAmountCur) from custSettlement where custSettlement.TransRecId == custtrans.RecId If you want get settlement amount before posting than you can refer spectrans table.The table SpecTrans contains all the transactions marked for settlement for payment journal. while select spectrans join custtransopen join custtrans where spectrans.SpecCompany == ledgerjournaltrans.DataAreaId && spectrans.SpecTableId == ledgerjournaltrans.TableId && spectrans.SpecRecId == ledgerjournaltrans.RecId && spectrans.RefCompany == custtranssopen.DataAreaId && spectrans.RefTableId == custtranssopen.TableId && spectrans.RefRecId == custtranssopen.RecId && custtransopen.RefRecId == custtrans.RecId && custtransopen.AccountNum == custtrans.AccountNum { info...

strScan and Find a first occurrence of a string in a string using x++

strScan (Find a first occurrence of a string in a string) info("int strScan(str _text1,str _text2,int _position,int _number)"); info("Searches a text string for the occurrence of another string."); info("_text1 - The text string to search."); info("_text2 - The string to find."); info("_position - The position at which the search should start."); info("_number - The number of characters that should be searched."); info(int2str(strScan("ABCDEFGHIJ","DE",1,10)));