Tuesday, July 9, 2013

Passing parameter between forms and Create reports using Multi select lookup

1.Create formA like
Note : FormA contains multiple select lookup so it has features of getting the multiple Account Number;
Main class is modified as below in the FormA




public class FormRun extends ObjectRun
{
    SysLookupMultiSelectCtrl msCtrl;
}
/***************************************************/
//in the init method of FormA.
public void init()
{
    super();
    // AccountNum - Name of control on which you want a lookup.
   // CustQry - Query to get the lookup data of that required table
    msCtrl = SysLookupMultiSelectCtrl::construct(element, AccountNum, querystr(CustQry));
}
/***************************************************************/
//in the button clicked() in FormA.

void clicked()
{
    // Args class is usually used in Axapta for passing parameters between forms
    Args            args;
    FormRun         formRun;
    container contain;
    str        containstr;
    ;

    args = new args();

    // Our values which we want to pass to FormB
    // If we want pass just simple string we can use 'parm' method of 'Args' class
    contain = [AccountNum.valueStr()];
    containstr = con2Str(contain);
    args.parm(containstr);

    // Run FormB

    args.name(formstr(CustomerDetails));
    formRun = classFactory.formRunClass(Args);
    formRun.init();
    formrun.run();
    formrun.wait();

    super();
}

/*******************************************************************/

2.Create FormB as like this



On clicking of the above FormA “Clickhere” that concern AccountNum details will be depicted in grid
//in the FormB Class declaration
public class FormRun extends ObjectRun
{
    container       contain;
    str CompanyId;
}
/*************************************************************************/
/ in the init() of that fornB
public void init()
{
    str             tmp;
    ;
    super();
    // Check for passed arguments
    if( element.args() )
    {
        contain = str2con(element.args().parm());
        //Now receive the container multiple value with separater as ";" to replace with ","
         AccountNumb.text(strReplace(strFmt("%1",conPeek(contain,1)),';',','));
    }
}
/**********************************************************/
In the Data source of the FormB drop the CustTable and in the executeQuerry() of that datasource
//This makes the grid to reflect with reference to the StringEdit that we added as the range to the grid.
public void executeQuery()
{
     this.query().dataSourceNo(1).addRange(fieldNum(CustTable,AccountNum)).value(AccountNumb.valueStr());
    super();
}
/***********************************************************/
3.Onclicking of “Cust report Generator” that concern report will be generated like this.



//here you find the change In the image that is because of the company image.


No comments:

Post a Comment