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

时间:2015-10-27 13:14:43

标签: axapta lookup dynamics-ax-2012 x++

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

全心全意,

享受!

2 个答案:

答案 0 :(得分:3)

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

因此,您需要通过创建新的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之一。它可能不是选择该字段的东西,因此它总是空白的。这是我要尝试的第一件事。