Interview Questions

Wednesday, May 14, 2014

Lookup from multiple table ax 2009

Lookup from multiple table ax 2009

SysMultiTableLookup xpo

First import above xpo(on own risk),because its contains system class.

First  Take Xpo from following Link after it write code where you want to use multitable lookup in ax 2009
public void lookup()
{
    Query                   query = new Query();
    QueryBuildDataSource    qbdsItem;
    QueryBuildDataSource    qbdsInventTableModule,qbdsInvent;
    QueryBuildDataSource    qbdsInventItemLocation;
    QueryBuildRange         qbrModuleType;
    SysMultiTableLookup     sysTableLookup;
    ;
    qbdsItem = query.addDataSource(tableNum(prodBom));
    qbdsInventTableModule = qbdsItem.addDataSource(tableNum(inventdim), "Purch");
    qbdsInventTableModule.relations(true);
    if(S3RejectionLine_ProdId.valueStr())
    {
        qbdsItem.addRange(fieldnum(prodBom,Prodid)).value(RejectionLine_ProdId.valueStr());
    }
    qbdsInventTableModule.fetchMode(QueryFetchMode::One2One);
    sysTableLookup = SysMultiTableLookup::newParameters(this, query);
    sysTableLookup.addLookupField(fieldNum(prodBom, recid));
    sysTableLookup.addLookupField(fieldNum(prodBom, ItemId),1,false,'Itemid');
    sysTableLookup.addLookupMethod('ItemName',1,'ItemName');
    sysTableLookup.addLookupField(fieldNum(inventdim, InventSizeId), 2, false, "InventSizeId");
    sysTableLookup.addLookupField(fieldNum(inventdim, InventLocationId), 2,false,"InventLocationId");
    sysTableLookup.addLookupField(fieldNum(inventdim, configId), 2,false,"configId");

    sysTableLookup.performFormLookup();
}
===============================================================
public void lookup()
{
    QueryBuildDataSource    queryBuildDataSource;
    SysTableLookup          lookup;
    QueryBuildRange         queryBuildRange;
    Query                   query;

    query = new Query();

    // Add the first data source to the query
    queryBuildDataSource = query.addDataSource(tableNum(JournalizingDefinition));

    // Add the range to this first data source
    queryBuildRange = queryBuildDataSource.addRange(fieldNum(JournalizingDefinition, JournalizingDefinitionModuleValue));

    // Set the range
    queryBuildRange.value(enum2str(JournalizingDefinitionModuleId::GeneralLedger));

    lookup = SysTableLookup::newParameters(tableNum(JournalizingDefinition), this, true);
    lookup.parmQuery(query);

    // Add the fields to be shown in the lookup form.
    lookup.addLookupfield(fieldNum(JournalizingDefinition, JournalizingDefinitionCode));
    lookup.addLookupfield(fieldNum(JournalizingDefinition, JournalizingDefinitionDesc));
    lookup.addLookupfield(fieldNum(JournalizingDefinition, JournalizingDefinitionModuleValue));

    // Perform the lookup.
    lookup.performFormLookup();

}

--------------------------------------------------

public void lookup(FormControl _formControl, str _filterStr)
{
    SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(ProdBOM), _formControl);
    Query query = new Query();
    QueryBuildDataSource qbds;
    QueryBuildRange  qbr;
    ;
    sysTableLookup.addLookupField(fieldnum(ProdBOM, itemid));
    sysTableLookup.addLookupMethod('itemName');
    qbds = query.addDataSource(tablenum(ProdBOM));
    if(Rejection_ProdId.valueStr())
    {
        qbds.addRange(fieldnum(ProdBOM, prodid)).value(Rejection_ProdId.valueStr());
    }
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}


Note : Lookup can be created by
1) By Relations
2) By Method
3) By EDT
4) By AutoLookup
5) By TitleField1 and TitleField2

3 comments:

  1. Is this xpo places on your personal drive?
    This file is downloaded as a txt file like "PrivateProject_SysMultiTableLookup.xpo.txt".
    How to download it as an xpo?

    ReplyDelete
  2. Thanks bro.. I've been searching for this class for a period of time...

    ReplyDelete
  3. I don't appreciate you copying my work without any reference.

    http://kashperuk.blogspot.dk/2008/09/sysmultitableloookup-dynamic-lookups.html

    ReplyDelete