我想从查找方法中选择RecId吗?
StringEditLookup_ZipCode
中的查找方法public void lookup()
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
QueryBuildRange queryBuildRange;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(LogisticsAddressZipCode), this);
sysTableLookup.addLookupField(fieldNum(LogisticsAddressZipCode, ZipCode));
sysTableLookup.addLookupField(fieldNum(LogisticsAddressZipCode, City));
sysTableLookup.addSelectionField(fieldNum(LogisticsAddressZipCode, RecId));
queryBuildDataSource = query.addDataSource(tableNum(LogisticsAddressZipCode));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
//super();
}
在modified
方法中,我希望广告阅读并使用 RecId 。
我想用ZipCode值填充 StringEditLookup_ZipCode 。
可以采用RecID吗? LogisticsAddressZipCode 表未被ZipCode编入索引 为此,我需要采用RecID。
有一种方法可以保存在全局变量中,或以某种方式在查找方法或其他点中选择recid?
全心全意,
享受!
答案 0 :(得分:3)
据我所知,SysTableLookup
框架无法做到这一点。基本上,您希望查找返回两个值,ZipCode
和RecId
。但是框架只能返回一个值。
因此,您需要通过创建新的lookup form来实现自己的查找,而不是框架。然后,您可以从此表单中检索lookup
方法中的所选记录。下面是一些代码,可以让您了解lookup
方法的外观:
public void lookup()
{
FormRun lookupFormRun;
Args args;
LogisticsAddressZipCode myLookupZipCode;
args = new Args();
args.name(formStr(MyNewLookupForm));
lookupFormRun = classFactory.formRunClass(args);
lookupFormRun.init();
this.performFormLookup(lookupFormRun);
lookupFormRun.wait();
if (lookupFormRun.closedOk())
{
myLookupZipCode= formRun.docCursor();
}
}
从那里,您可以将RecId
myLookupZipCode
保存到类变量中,然后在modified
方法中使用它。
另请参阅Lookup form returning more than one value了解更多信息。
答案 1 :(得分:0)
你所拥有的正是我所尝试过的。从查找中选择值时会发生什么?如果这不起作用,我会尝试将RecId添加为lookupFields之一。它可能不是选择该字段的东西,因此它总是空白的。这是我要尝试的第一件事。