自定义查找选择问题

时间:2014-03-10 12:05:09

标签: lookup axapta dynamics-ax-2009

我们的想法是使用唯一的雇主名称构建查找。 查找工作正常,但是当我选择一个值然后选择查找按钮 再次点击 RED 中标记的地方,有重复的值,这是错误的。

请参阅代码段和快照

QueryBuildDataSource    qbds;
Query                   query = new Query();
FormStringControl       control = dialog.formRun().controlCallingMethod();
SysTableLookup          sysTableLookup =  SysTableLookup::newParameters(tablenum(VendTable), control);
;

qbds  = query.addDataSource(tablenum(VendTable));
qbds.addGroupByField(fieldnum(VendTable,EmployerName));
sysTableLookup.addLookupfield(fieldnum(VendTable, EmployerName));

sysTableLookup.parmQuery(query);
sysTableLookup.parmUseLookupValue(false);
sysTableLookup.performFormLookup();

enter image description here enter image descrip![enter image description here这里] 2

2 个答案:

答案 0 :(得分:1)

在表VendTable和字段EmployerName 以及RecId 的计数上进行查看,然后将查找基于视图。

如下所示CustTableCustGroup

enter image description here

enter image description here

答案 1 :(得分:1)

在这些情况下,我使用这种方法。它类似于Jan提出的答案,但更简单。

创建一个TMP表,其中包含您要在查找中查看的字段,包括EmployerName,我将其称为MyTmpTable。好吧,实际上你可以使用VendTable作为tmp表和setTmp(),但它容易出错(如果你之前插入()并忘记了setTmp()怎么办?)它有很多字段(更多的RAM消耗,即使它们'空的);所以我宁愿创建一个新的TMPTable。

现在在VendTable中,这是一个查找方法:

static voidlookup_EmployerName(FormControl _callingControl)
{
    VendTable       vendTable;
    MyTmpTable      tmpTable;
    SysTableLookup  sysTableLookup;
    ;
    while select EmployerName from vendTable
        group by EmployerName
    {
        tmpTable.EmployerName = vendTable.EmployerName;
        tmpTable.insert();
    }        

    sysTableLookup = SysTableLookup::newParameters(tableNum(MyTmpTable),_callingControl);
    sysTableLookup.addLookupField(fieldNum(MyTmpTable, EmployerName),true);
    sysTableLookup.addLookupMethod(tableMethodStr(MyTmpTable, yourMethod));
    sysTableLookup.addLookupField(fieldNum(MyTmpTable, otherfieldtosee),false);
    //More field/methods...
    sysTableLookup.parmTmpBuffer(tmpTable);
    sysTableLookup.performFormLookup();
}

现在您可以愉快地使用此查找。可以重写While Select以获得性能,但在此使用此更清晰。