自定义查找选择问题(Custom lookup select issue)

2019-10-19 13:13发布

我们的想法是去构造具有独特的用人单位名称进行查找。 查找工作正常,但是当我选择一个值,然后再次选择查找按钮,点击红色标记的地方,也有重复的值,这是不对的。

请参阅该代码段和快照

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();

这里和灰] 2

Answer 1:

就表的视图VendTable和现场EmployerName 和RecId的计数 ,然后立足于视图的查询。

如下所示为CustTableCustGroup



Answer 2:

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

创建要在查找,看场,其中包括一个EmployerName TMP表,我将其称之为MyTmpTable。 嗯,其实你可以(之前,如果你插入()和忘记setTmp(什么)?)使用VendTable与setTmp()TMP表,但它是容易出错的,它有很多领域(更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();
}

现在你可以在愉悦使用该查询。 在选择时可以重写,以提高性能,但是用这个在这里再清楚不过了。



文章来源: Custom lookup select issue