Filter by field in ax 2012:
To have filter by filed option in ax 2012, we need to
override context method at the control level in the design as shown below.
public void
context()
{
int
selectedMenu;
formrun fr;
Args ag;
Name strtext;
querybuilddataSource qb1, qb2, qb3;
classFactory cf;
query q;
#define.SysFormSearch('SysFormSearch')
#define.FindEdit('FindEdit')
PopupMenu menu = new
PopupMenu(element.hWnd());
int a =
menu.insertItem("@DES212");
int c =
menu.insertItem("@DES213");
;
selectedMenu = menu.draw();
switch (selectedMenu)
{
case -1: //Filter by field
break;
case a:
ag
= new args(#SysFormSearch);
cf
= new classFactory();
fr
= cf.formRunClass(ag);
fr.run();
fr.wait();
//Reading User entered value for filter
process
strtext = fr.design().controlName(#FindEdit).valueStr();
if(strtext)
{
//Creating a query for filter
q = custVendExternalItem_ds.query();
qb1 = q.dataSourceTable(tablenum(custVendExternalItem));
qb1 = qb1.addDataSource(TableNum(InventTable));
qb1.addLink(FieldNum(custVendExternalItem,ItemId),FieldNum(InventTable,ItemId));
qb2 = qb1.addDataSource(tableNum(EcoResProduct));
qb2.relations(true);
qb3 = qb2.addDataSource(tableNum(EcoResProductTranslation));
qb3.relations(true);
qb3.addRange(FieldNum(EcoResProductTranslation,Name)).value(strtext);
custVendExternalItem_ds.query(Q);
custVendExternalItem_ds.executeQuery();
}
break;
case c
: // Remove Filter
q
= new Query();
qb1 = q.addDataSource(tableNum(custVendExternalItem));
qb1.addRange(fieldNum(custVendExternalItem,
ModuleType)).value(strfmt("%1,%2",enum2str(ModuleInventPurchSalesVendCustGroup::Vend),
enum2str(ModuleInventPurchSalesVendCustGroup::VendGroup)));
custVendExternalItem_ds.query(Q);
custVendExternalItem_ds.executeQuery();
break;
Default:
break;
}
}
No comments:
Post a Comment