user3226663
user3226663

Reputation: 137

Ax 2012 custom lookup

I want to create look up of 3 tables and their fields , my requirement is in the first field i would like to show the 3 table names as look up and in the second field i would be showing all the fields of the table selected in the first field.

For e.g if i have Route, sales basket and Invent table in look up of first field, i select Invent table in the first field then in the second field i have to show all the fields of invent table as look up. please help me in this regard.

I have tried using the normal process for look up but could not succeed, please help me in finding the right direction

Upvotes: 0

Views: 2635

Answers (2)

10p
10p

Reputation: 6793

Table name lookup:

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();
}

Field name lookup:

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();
}

Upvotes: 1

user89974
user89974

Reputation:

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

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

OR

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();
}

Upvotes: 1

Related Questions