...if users don't go to AX, AX will go to the users...! a blog about Dynamics AX tips and tricks, Sharepoint and Reporting Services
Showing posts with label passing values between form. Show all posts
Showing posts with label passing values between form. Show all posts
Friday, November 2, 2012
Passing values between two forms
Hi all!
Today i will talk to you about passing values between forms in AX...
We have to open a form with data filtered by specific parameters coming from another form.
In this specific case I have to pass ItemId and InventDimId from InventDimCombination (formA) to a custom-made form (formB).
First I created a MenuItemButton on formA which calls FormB and I override the clicked method with this code:
void clicked()
{
Args _args;
FormRun _formRun;
str _filterValue;
;
//Assign at _filterValue a string that contains ItemId and InventDimId in a unique field which is
//pass to the next form
_filterValue = (InventDimCombination.ItemId + '-' + InventDimCombination.InventDimId);
_args = new Args();
// _filterValue is passed to next form
_args.parm(_filterValue);
_args.name(formstr(formB));
_args.caller(this);
// Creating object for FormRun and initialization for load
_formRun = ClassFactory.formRunClass(_args);
_formRun.init();
_formRun.run();
_formRun.wait();
}
Then I override the init method of the formB datasource:
public void init()
{
QueryBuildRange rangeItemId;
QueryBuildRange rangeConfigId;
QueryBuildRange rangeColorId;
str Config;
str Color;
str s,t;
int i;
super();
//check if value is arrived from formA
if(element.args().parm())
{
//retrieve ItemId and InventDimId as two separate field from the passed value
i = strlen(element.args().parm());
s = substr(element.args().parm(),i-7,8);//inventDimId
t = strDel(element.args().parm(),i-8,9);//ItemId
Config = InventDim::find(s).configId;
Color = InventDim::find(s).InventColorId;
//create the query to initialize the form
rangeItemId = this.query().dataSourceTable(tablenum(formBtable)).addRange(fieldnum(formBTable, ItemIdfield));
rangeConfigId = this.query().dataSourceTable(tablenum(formBtable)).addRange(fieldnum(formBtable, ConfigIdfield));
rangeColorId = this.query().dataSourceTable(tablenum(formBtable)).addRange(fieldnum(formBtable, InventColorIdfield));
rangeItemId.value(t);
rangeConfigId.value(Config);
rangeColorId.value(Color);
rangeItemId.status(RangeStatus::Hidden);
rangeConfigId.status(RangeStatus::Hidden);
rangeColorId.status(RangeStatus::Hidden);
}
}
That's all, when you press the button in formA, the formB will open showing only data related to the passed parameters
See you next time!
Etichette:
AX,
AX2009,
DAX,
passing parameters,
passing values between form
Subscribe to:
Posts (Atom)