我们的想法是使用唯一的雇主名称构建查找。 查找工作正常,但是当我选择一个值然后选择查找按钮 再次点击 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();
这里] 2
答案 0 :(得分:1)
在表VendTable
和字段EmployerName
以及RecId 的计数上进行查看,然后将查找基于视图。
如下所示CustTable
和CustGroup
:
答案 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以获得性能,但在此使用此更清晰。