簡體   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