Skip to main content

Posts

Showing posts from April, 2010

Refreshing (executeQuery) a calling form from the called form.

A feature that you often need when you work with code that is called from a form and manipulates data, is to be able to refresh the calling form to reflect the changes made, when the code has been run. This could also be a form calling an other form, where data changes are made, in the called form, but the changes must be reflected in the calling form, when the called form is closed. I have seen it done by making call back to a method on the calling form, that does the refresh. You can however make the refresh from the CALLED form or code, using an args-object. When a form calls an other form it is typically done via a menu item, and thus automatically an args object is passed to the called form. The args object can carry a tablebuffer object that is acessed with the record method on the args object. You can determine if the tablebuffer object is a formDataSource, and if so, you can instantiate a formDataSource-object on which you call the executeQuery-metod. One example could be: Form

Don't override the tabChange-method on a tab.

Working on a Dynmics AX 4.0, I learned today (from a wizard-level colleague), that overriding the tabChange-method on a tab in a form in Dynamic AX/Axapta, disallows the usersetup of the tab and all of it's children. My problem was that a customer complained that they were not able to make a user setup of the form and add fields to a tab and all tabpages below that tab on the PurchTable-form. The customization: public boolean tabChange(int fromTab) { boolean ok; ; ok = super(fromTab); if (ok) purchTable_ds.lastJournals(); return ok; } had been added to the tab. Seing that the method call PurchTable_ds.lastJournals(); was present in pageActivated-method on the tabpage TabHeaderPostings in the SYS-layer (!), I decided to remove the above customization.

Useful function for left trimming 0's in a string.

A colleague of mine made this little function. It strips leading 0's in a string. The string may only be a 1000 characters long, but that can be modified by changing 1000 to an other value. static TempStr strLtrim0(TempStr txt,str 1 trim = '0') { int i = strNfind(txt,trim,1,1000); return i ? subStr(txt,i,1000) : ''; }