Sorry for late response, got carried away with more pressing matters.
MuthuAXTech, sorry I still don't get how can I pass the paramter to lookup added method.
Hi Gunjan!
Thanks for your reply! I will try to explain what I want to achieve:
I created a custom lookup in orderlines table(custom model):
public void lookupActivePositions(FormControl _lookupCtrl, PrmDate _startDate)
{
SysMultiTableLookup sysMultiTableLookup;
Query query;
QueryBuildDataSource qbds, posDepQbds;
PRMGetPosEmpCount PRMGetPosEmpCount = PRMParameters::find().GetPosEmpCount;
query = new Query();
qbds = query.addDataSource(tableNum(PRMPosition));
qbds.clearRanges();
switch(PRMGetPosEmpCount)
{
case PRMGetPosEmpCount::PosDepart:
posDepQbds = qbds.addDataSource(tableNum(PRMPosDepart));
posDepQbds.clearRanges();
posDepQbds.addRange(fieldNum(PRMPosDepart, DepartId)).value(SysQuery::value(this.DepartId));
posDepQbds.addRange(fieldNum(PRMPosDepart, StartDate)).value(strFmt("..%1", SysQuery::value(_startDate)));
//posDepQbds.addRange(fieldNum(PRMPosDepart, EndDate)).value(strFmt("1%, %2..", SysQuery::valueEmptyString(), SysQuery::value(this.Start)));
posDepQbds.addRange(fieldNum(PRMPosDepart, EndDate)).value(queryvalue(dateNull()));
posDepQbds.addRange(fieldNum(PRMPosDepart, EndDate)).value(strFmt("%1..", SysQuery::value(_startDate)));
posDepQbds.addLink(fieldNum(PRMPosition, PositionId), fieldNum(PRMPosDepart, PositionId));
posDepQbds.joinMode(JoinMode::ExistsJoin);
qbds.addRange(fieldNum(PRMPosition, Start)).value(strFmt("..%1", SysQuery::value(this.Start)));
qbds.addRange(fieldNum(PRMPosition, End)).value(queryvalue(dateNull()));
qbds.addRange(fieldNum(PRMPosition, End)).value(strFmt("%1..", SysQuery::value(_startDate)));
break;
default:
qbds.addRange(fieldNum(PRMPosition, Start)).value(strFmt("..%1", SysQuery::value(_startDate)));
qbds.addRange(fieldNum(PRMPosition, End)).value(queryvalue(dateNull()));
qbds.addRange(fieldNum(PRMPosition, End)).value(strFmt("%1..", SysQuery::value(_startDate)));
break;
}
sysMultiTableLookup = SysMultiTableLookup::newParameters(_lookupCtrl, query);
sysMultiTableLookup.addLookupfield(fieldNum(PRMPosition, PositionId));
sysMultiTableLookup.addLookupfield(fieldNum(PRMPosition, Name));
if(PRMGetPosEmpCount == PRMGetPosEmpCount::PosDepart)
{
sysMultiTableLookup.addLookupMethod(tableMethodStr(PRMPosDepart, positionsAvailable));
}
else
{
sysMultiTableLookup.addLookupMethod(tableMethodStr(PRMPosition, positionsAvailable));
}
qbds.addSortField(fieldNum(PRMPosition, PositionId), SortOrder::Ascending);
sysMultiTableLookup.parmQuery(query);
sysMultiTableLookup.performFormLookup();
}
I have forms ( example of one form) :

With 3 DS, On PrmOrderlines_DS field control I have overidden lookup method:

Lookup method:
public void lookup(FormControl _formControl, str _filterStr)
{
PRMGetPosEmpCount PRMGetPosEmpCount = PRMParameters::find().GetPosEmpCount;
if(PRMGetPosEmpCount::PosDepart && !PRMOrderLines.DepartId)
{
error("@PRM7912");
return;
}
if(!PRMOrderLines.AssumedDate)
{
error("@PRM7913");
return;
}
if (!PRMOrderLines.RecId)
PRMOrderLines.write();
PRMOrderLines.lookupActivePositions(_formControl, PRMOrderLines.AssumedDate);
//super(_formControl, _filterStr);
}
On other form different date field is passed to lookup method, but everything else is the same.
I hope now you see the full picture.
Kind regards,
Maris