user3049607
user3049607

Reputation: 41

Resolve reference method

I am new to Dynamics AX 2012, in our project, we have a lookup for reference Group, lookup values are coming like :

A
C
B
D
C
B
C
A
D

The values are correct , But I want the lookup only shows distinct values like

A
B
C
D

I need To Write the code in the Resolve reference method.But I dont know How to Filter the Distinct values, Lookup Values Are RECIDs. I dont Know How to Filter the values Please check the Code.

public Common lookupReference(FormReferenceControl _formReferenceControl)
{
    Common ret;
    SysReferenceTableLookup   sysReferenceTableLookup;
    QueryBuildDataSource qbdsPositionDetails,qbdsJobDetails,qbdsJob;
    HcmJob _HcmJob;    
    Query query = new Query();  

    sysReferenceTableLookup = SysReferenceTableLookup::newParameters(tableNum(HcmJob),_formReferenceControl, true);
    qbdsJob = query.addDataSource(tableNum(HcmJob));
    qbdsPositionDetails = qbdsJob.addDataSource(tableNum(HcmPositionDetail));
    qbdsPositionDetails.relations(true);   
    qbdsPositionDetails.addRange(fieldNum(HcmPositionDetail,Department)).value(queryValue(HCMResRequirement.Department));
    sysReferenceTableLookup.addLookupField(fieldNum(HcmJob,JobId));
    sysReferenceTableLookup.addLookupMethod('description');
     sysReferenceTableLookup.parmQuery(query);
    _HcmJob = sysReferenceTableLookup.performFormLookup();
    return _HcmJob;
}

Upvotes: 0

Views: 3047

Answers (1)

Jan B. Kjeldsen
Jan B. Kjeldsen

Reputation: 18051

Your two tables are inner joined and that is not what you want!

You want an exists join, returning the jobs that already exists in a department.

This can be done with line:

qbdsPositionDetails.joinMode(JoinMode::ExistsJoin);

Cleaned up this gives us:

public Common lookupReference(FormReferenceControl _formReferenceControl)
{
    SysReferenceTableLookup lookup = SysReferenceTableLookup::newParameters(tableNum(HcmJob),_formReferenceControl, true);
    QueryBuildDataSource ds = lookup.parmQuery().dataSourceNo(1).addDataSource(tableNum(HcmPositionDetail));
    ds.addRange(fieldNum(HcmPositionDetail,Department)).value(queryValue(HCMResRequirement.Department));
    ds.joinMode(JoinMode::ExistsJoin);    
    ds.relations(true);        
    lookup.addLookupField(fieldNum(HcmJob,JobId));
    lookup.addLookupMethod(tableMethodStr(HcmJob,description));
    return lookup.performFormLookup();   
}

Upvotes: 1

Related Questions