public void lookup()
{
Query q = new Query();
QueryBuildDataSource qbds,qbds1, qbds2;
QueryBuildRange qbr;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(HcmWorker), this);
qbds = q.addDataSource(tableNum(HcmWorker));
qbds1 = qbds.addDataSource(tableNum(HcmEmployment));
qbds1.relations(false);
qbds1.joinMode(JoinMode::ExistsJoin);
qbds1.addLink(fieldNum(HcmWorker, RecId), fieldNum(HcmEmployment, Worker));
qbds2 = qbds.addDataSource(tableNum(HcmEmploymentContractor));
qbds2.relations(false);
qbds2.joinMode(JoinMode::ExistsJoin);
qbds2.addLink(fieldNum(HcmEmployment, RecId), fieldNum(HcmEmploymentContractor, Employment));
qbds2.addRange(fieldNum(HcmEmploymentContractor, CUSTOMContractorTypeEnum)).value(enum2str(CUSTOMContractorTypeEnum::Principal));
sysTableLookup.parmQuery(q);
sysTableLookup.addLookupfield(fieldNum(HcmWorker, PersonnelNumber), true);
sysTableLookup.addLookupMethod(tableMethodStr(HcmWorker, Name));
sysTableLookup.performFormLookup();
}
While debugging I found that, as soon as the code hits this :
qbds2.addLink(fieldNum(HcmEmployment, RecId), fieldNum(HcmEmploymentContractor, Employment));
It forms the relation between HCMWorker.RecId =HCMEmploymentContractor.Employment, and not HcmEmployment.RecId =HCMEmploymentContractor.Employment. I am not sure why is this happening?
Can anyone help, please?