我是Dynamics AX 2012新手,在我们的项目中,我们查找了参考组,查找值如下:
A C B D C B C A D
值正确, 但我希望查找只显示不同的值,如
A B C D
我需要在Resolve引用方法中编写代码。但我不知道如何过滤不同的值,查找值是RECID。我不知道如何过滤值请检查代码。
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;
}
答案 0 :(得分:1)
你的两张桌子是inner joined,这不是你想要的!
您想要一个存在联接,返回部门中已存在的作业。
这可以通过以下行完成:
qbdsPositionDetails.joinMode(JoinMode::ExistsJoin);
清理这个给了我们:
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();
}