Before writing custom lookup first you have to add reference control in your form and you have to specify some properties as shown in the screen shot below,
Now override "lookupReference" method of your reference control and add following code,
public Common lookupReference()
{
CustTable custTable;
DirPartyTable dirPartyTable;
DirPartyLocation dirPartyLocation;
LogisticsPostalAddress logisticsPostalAddress;
SysReferenceTableLookup sysRefTableLookup;
Query lookupQuery = new Query();
QueryBuildDataSource lookupQueryDataSource;
// Construct the SysRefTableLookup object
sysRefTableLookup = SysReferenceTableLookup::newParameters(tableNum(LogisticsPostalAddress), ReferenceGroup);
// Add the field list that will be displayed on the lookup form
// You can Change/Add more fields in lookup based on your requirement.
sysRefTableLookup.addLookupfield(fieldNum(LogisticsPostalAddress, Address));
sysRefTableLookup.addLookupfield(fieldNum(LogisticsPostalAddress, Location));
// Construct the query's data source
lookupQueryDataSource = lookupQuery.addDataSource(tableNum(LogisticsPostalAddress));
// To add multiple values in range.
while select Location from LogisticsPostalAddress
join DirPartyLocation
join dirPartyTable
join custTable
where logisticsPostalAddress.Location == dirPartyLocation.Location
&& dirPartyLocation.Party == custTable.Party
&& custTable.Party == DirPartyTable.RecId
&& custTable.AccountNum == ADCAutodesaCustomerInfo.CustAccount
{
// Add ranges to the query data source
lookupQueryDataSource.addRange(fieldNum(LogisticsPostalAddress, Location)).value(queryValue(LogisticsPostalAddress.Location));
}
// Pass the query to the lookup object
sysRefTableLookup.parmQuery(lookupQuery);
return sysRefTableLookup.performFormLookup();
}
after adding this code compile your form/project to reflect the changes on form.
Cheers!
Now override "lookupReference" method of your reference control and add following code,
public Common lookupReference()
{
CustTable custTable;
DirPartyTable dirPartyTable;
DirPartyLocation dirPartyLocation;
LogisticsPostalAddress logisticsPostalAddress;
SysReferenceTableLookup sysRefTableLookup;
Query lookupQuery = new Query();
QueryBuildDataSource lookupQueryDataSource;
// Construct the SysRefTableLookup object
sysRefTableLookup = SysReferenceTableLookup::newParameters(tableNum(LogisticsPostalAddress), ReferenceGroup);
// Add the field list that will be displayed on the lookup form
// You can Change/Add more fields in lookup based on your requirement.
sysRefTableLookup.addLookupfield(fieldNum(LogisticsPostalAddress, Location));
// Construct the query's data source
lookupQueryDataSource = lookupQuery.addDataSource(tableNum(LogisticsPostalAddress));
// To add multiple values in range.
while select Location from LogisticsPostalAddress
join DirPartyLocation
join dirPartyTable
join custTable
where logisticsPostalAddress.Location == dirPartyLocation.Location
&& dirPartyLocation.Party == custTable.Party
&& custTable.Party == DirPartyTable.RecId
&& custTable.AccountNum == ADCAutodesaCustomerInfo.CustAccount
{
// Add ranges to the query data source
lookupQueryDataSource.addRange(fieldNum(LogisticsPostalAddress, Location)).value(queryValue(LogisticsPostalAddress.Location));
}
// Pass the query to the lookup object
sysRefTableLookup.parmQuery(lookupQuery);
return sysRefTableLookup.performFormLookup();
}
after adding this code compile your form/project to reflect the changes on form.
Cheers!
No comments:
Post a Comment