lookup filter

Hi I need to filter lookup with out null values.

it should not show null values.

can anybody help me. whats the logic.

I wrote following code for filter …


public void lookup()
{
PurchTable purchTable;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(PurchTable), this);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tablenum(PurchTable));
;
sysTableLookup.addLookupfield(fieldnum(PurchTable, PurchId));

queryBuildDataSource.addRange(fieldnum(PurchTable, PurchId)).value(“000010…000020”);

sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}


But I am not getting how to avoid null values.

I got the solution:

To avoid the null values in Dynamic lookup

public void lookup()
{
PurchTable purchTable;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(PurchTable), this);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tablenum(PurchTable));
;
sysTableLookup.addLookupfield(fieldnum(PurchTable, PurchId));

queryBuildDataSource.addRange(fieldnum(PurchTable, PurchId)).value(“000010…000020”);
//To avoid the null values in Dynamic lookup
//queryBuildDataSource.addRange(fieldnum(Test_Vend,Name)).value(SysQuery::valueNotEmptyString());
//queryBuildDataSource.addRange(fieldnum(Test_Vend,Name)).value(’!="" ');

sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}

Hi Sunil…

I am facing near about same problem.

I am having a scenario…

I want to create a user control in which two fields are their VendGroup and VendAccountnum.

Lookup for this two fields are coming from EDT. Now if I selected one Vendgroup in first field say “221” then this “221” I want to pass as a range in VendAccountNum lookup so that in vend accountnum lookup only that value will be visible who’s having this “221” range.

I am struggling from few days to achieve this, If you have any idea then can you please suggest me.

Hi Nandhini, The below code will help you… public void lookup() { SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(VendTable), this); Query query = new Query(); QueryBuildDataSource queryBuildDataSource = query.addDataSource(tablenum(VendTable)); ; sysTableLookup.addLookupfield(fieldnum(VendTable, AccountNum)); sysTableLookup.addLookupfield(fieldnum(VendTable, VendGroup)); queryBuildDataSource.addRange(fieldnum(VendTable, AccountNum)).value(Datasource.VendGroup); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); }

Hi Nandini,

First of all, when you are using a EDT for lookup in controls, you can’t set filter directly in form controls.

You need to override Form control lookup method to pass range in control for Vendor Account.

You can either add above code as described by Kuppuswamy in above post or you can use the above code with minor change in adding Range as:

querybuilddatasource.addrange(fieldnum(Vendtable , VendGroup)).value(.valuestr());

Hi Kuppusamy ,

Where shoul i write this method? on datasource, field???

Hi Mohad,

Where should I write this method. I am using AX2012.