繁体   English   中英

Ax 2012自定义查找

[英]Ax 2012 custom lookup

我想创建3个表及其字段的查找,我的要求是在第一个字段中我要显示3个表名作为查找,在第二个字段中我要显示在表中选择的所有表字段第一场。

例如,如果在第一个字段中查找“路线”,“销售篮”和“ Invent”表,则在第一个字段中选择“ Invent”表,然后在第二个字段中,我必须显示“ invent”表中的所有字段。 请在这方面帮助我。

我尝试使用正常过程进行查找,但无法成功,请帮助我找到正确的方向

TableId tableId = pickTable();    
FieldId fieldId = pickField(tableId);

info(tableId2name(tableId));
info(fieldId2name(tableId, fieldId));

要么

public void lookup()
{
    SysTableLookup          sysTableLookup;
    SysDictField            sysDictField;
    TmpTableFieldLookup     tmpTableFieldLookup; 
    Enumerator              en;    

    super();

    en = SysDictTable::newName(tableStr(InventTable)).fields(false, true, false).getEnumerator();

    while (en.moveNext())
    {
        sysDictField = en.current();

        tmpTableFieldLookup.TableName       = sysDictField.tableName();                
        tmpTableFieldLookup.FieldMethodName = sysDictField.name();        
        tmpTableFieldLookup.insert();
    }

    sysTableLookup = SysTableLookup::newParameters(tableNum(tmpTableFieldLookup), this);

    sysTableLookup.addLookupfield(fieldNum(TmpTableFieldLookup, TableName));
    sysTableLookup.addLookupfield(fieldNum(TmpTableFieldLookup, FieldMethodName), true);    

    //BP Deviation documented
    sysTableLookup.parmTmpBuffer(tmpTableFieldLookup);
    sysTableLookup.performFormLookup();
}

表名查找

public void lookupTableName(FormControl _formControl)
{
    container               validTableNames = [tableStr(Route), tableStr(SalesBasket), tableStr(InventTable)];
    SysTableLookup          sysTableLookup;
    Query                   q;
    QueryBuildDataSource    qbds;

    sysTableLookup = SysTableLookup::newParameters(tablenum(SysModelElement), _formControl);
    sysTableLookup.addLookupfield(fieldnum(SysModelElement, Name));
    sysTableLookup.addLookupfield(fieldnum(SysModelElement, AxId));

    q       = new Query();
    qbds    = q.addDataSource(tablenum(SysModelElement));
    qbds.addRange(fieldnum(SysModelElement, Name)).value(con2Str(validTableNames));
    qbds    = qbds.addDataSource(tablenum(SysModelElementType));
    qbds.addRange(fieldnum(SysModelElementType, Name)).value(SysQuery::value(UtilElementType::Table));
    qbds.relations(true);

    sysTableLookup.parmQuery(q);
    sysTableLookup.performFormLookup();
}

字段名称查询

public void lookupFieldName(FormControl _formControl, RefTableId _refTableId)
{
    SysTableLookup          sysTableLookup;
    Query                   q;
    QueryBuildDataSource    qbds;

    sysTableLookup = SysTableLookup::newParameters(tablenum(SysModelElement), _formControl);
    sysTableLookup.addLookupfield(fieldnum(SysModelElement, Name));
    sysTableLookup.addLookupfield(fieldnum(SysModelElement, AxId));

    q       = new Query();
    qbds    = q.addDataSource(tablenum(SysModelElement));
    qbds.addRange(fieldnum(SysModelElement, ParentId)).value(queryValue(_refTableId));
    qbds    = qbds.addDataSource(tablenum(SysModelElementType));
    qbds.addRange(fieldnum(SysModelElementType, Name)).value(SysQuery::value(UtilElementType::TableField));
    qbds.relations(true);

    sysTableLookup.parmQuery(q);
    sysTableLookup.performFormLookup();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM