Axapta Ax 2012自定义查找

Axapta Ax 2012自定义查找,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,我想创建3个表及其字段的查找,我的要求是在第一个字段中,我想将3个表名显示为查找,在第二个字段中,我将显示在第一个字段中选择的表的所有字段 例如,如果我在第一个字段的查找中有Route、sales basket和Invent table,我在第一个字段中选择Invent table,然后在第二个字段中,我必须显示Invent table的所有字段作为查找。请在这方面帮助我 我已尝试使用正常的查找过程,但未能成功,请帮助我找到正确的方向 TableId tableId = pickTable();

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

例如,如果我在第一个字段的查找中有Route、sales basket和Invent table,我在第一个字段中选择Invent table,然后在第二个字段中,我必须显示Invent table的所有字段作为查找。请在这方面帮助我

我已尝试使用正常的查找过程,但未能成功,请帮助我找到正确的方向

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

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


表名查找

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();
}
字段名查找

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