How to Join DataSources in the Lookup Methods and Passing Ranges


Form -> Datasource -> Field -> Methods -> Lookup (Override method)

public void lookup(FormControl _formControl, str _filterStr)
{
    Query                       query = new Query();
    QueryBuildDataSource        queryBuildDataSource,queryBuildDataSource1;
    QueryBuildRange             queryBuildRange,queryBuildRange1,queryBuildRange2,queryBuildRange3,queryBuildRange4;
    SysTableLookup              sysTableLookup;
    DmsAssociatedDealers        dmsAssociatedDealers;
    DmsAssociatedPartners       dmsAssociatedPartners;
    NoYesId                     isDealer;
    RecId                       consolidatedUserRecId;
               
    consolidatedUserRecId = DmsConsolidatedUserTable::findByAxUserId(curUserId()).RecId;
    isDealer   = DmsPartnerTypeTable::find(DMSPartnerBlockingTable.PartnerType).IsDealer;
    if(isDealer  == NoYes::Yes)
    {
        sysTableLookup = SysTableLookup::newParameters(tableNum(DmsAssociatedDealers), _formControl);
               
        queryBuildDataSource = query.addDataSource(tableNum(DmsAssociatedDealers));
               
        queryBuildDataSource1 = queryBuildDataSource.addDataSource(tableNum(CustTable));
        queryBuildDataSource1.joinMode(JoinMode::ExistsJoin);
        queryBuildDataSource1.fetchMode(QueryFetchMode::One2One);
        queryBuildDataSource1.relations(false);
        queryBuildDataSource1.addLink(fieldNum(CustTable,AccountNum),fieldNum(DmsAssociatedDealers,DealerCode));
        queryBuildDataSource1.addRange(fieldNum(CustTable,DMSActiveStatus)).value(queryNotValue(DMSActiveStatus::InActive));
               
               
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedDealers, DealerCode));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedDealers, PartnerName));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedDealers, DivisionCode));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedDealers, ChannelCode));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedDealers, consolidatedUserRecId));
        queryBuildRange1 = queryBuildDataSource.addRange(fieldNum(DmsAssociatedDealers,PartnerType));
        queryBuildRange1.value(queryValue(DMSPartnerBlockingTable_PartnerType.valueStr()));
        queryBuildRange2 = queryBuildDataSource.addRange(fieldNum(DmsAssociatedDealers,consolidatedUserRecId));
        queryBuildRange2.value(queryValue(consolidatedUserRecId));
        sysTableLookup.parmQuery(query);
        sysTableLookup.performFormLookup();
    }
    else if(isDealer  == NoYes::No)
    {
        sysTableLookup = SysTableLookup::newParameters(tableNum(DmsAssociatedPartners), _formControl);
               
        queryBuildDataSource = query.addDataSource(tableNum(DmsAssociatedPartners));
               
        queryBuildDataSource1 = queryBuildDataSource.addDataSource(tableNum(CustTable));
        queryBuildDataSource1.joinMode(JoinMode::ExistsJoin);
        queryBuildDataSource1.fetchMode(QueryFetchMode::One2One);
        queryBuildDataSource1.relations(false);
        queryBuildDataSource1.addLink(fieldNum(CustTable,AccountNum),fieldNum(DmsAssociatedPartners,PartnerCode));
        queryBuildDataSource1.addRange(fieldNum(CustTable,DMSActiveStatus)).value(queryNotValue(DMSActiveStatus::InActive));
               
               
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedPartners, PartnerCode));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedPartners, PartnerName));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedPartners, PartnerType));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedPartners, DivisionCode));
        sysTableLookup.addLookupField(fieldNum(DmsAssociatedPartners, ChannelCode));
               
        queryBuildRange1 = queryBuildDataSource.addRange(fieldNum(DmsAssociatedPartners,PartnerType));
        queryBuildRange1.value(queryValue(DMSPartnerBlockingTable_PartnerType.valueStr()));
        queryBuildRange = queryBuildDataSource.addRange(fieldNum(DmsAssociatedPartners,consolidatedUserRecId),true);
        queryBuildRange.value(queryValue(consolidatedUserRecId));
        sysTableLookup.parmQuery(query);
        sysTableLookup.performFormLookup();
    }
}

Comments

Popular posts from this blog

Create RFQ through X++

Base enum values in Dynamics 365

Project Id through X++ code