如何从查找方法中选择 RecId?

How to get RecId selected from lookup method?

我想获取从查找方法中选择的 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

我想用邮政编码值填充 StringEditLookup_ZipCode

可以拍RecID吗? LogisticsAddressZipCode Table 未按邮政编码编入索引 为此,我需要获取 RecID。

lookup方法或其他点中选择的全局变量或某种方式recid有保存方法吗?

谢谢大家,

尽情享受吧!

你所拥有的正是我会尝试的。当您从查找中选择一个值时会发生什么?如果这不起作用,我会尝试将 RecId 添加为 lookupFields 之一。这可能是它没有选择字段的地方,所以它总是空白的。这是我要尝试的第一件事。

据我所知,SysTableLookup 框架无法做到这一点。基本上,您希望查找 return 两个值,即 ZipCodeRecId。但是框架只能return一个值。

因此,您需要通过创建一个新的 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();
    }
}

从那里您可以将 myLookupZipCodeRecId 保存到 class 变量,然后在 modified 方法中使用它。

另请参阅 Lookup form returning more than one value 了解更多信息。