axaptax++dynamics-ax-2012

Multiple values in query range value in Dynamics AX 2012


How to build query with multiple values. I need to create filter which display only active BOMs in grid and I looking for solution. Here is my code which isnt working:

public void executeQuery() 
{
QueryBuildRange         qbr;
QueryRun                queryRun;
Query q = new Query();

qbr = SysQuery::findOrCreateRange(BOMTable_q.dataSourceTable(tableNum(BOMTable)), fieldNum(BOMTable, BOMId));

if (activeButton==false)
{
    qbr.value(SysQuery::valueUnlimited());
}   
else
{
    while select BOMVersion where BOMVersion.Active==true && BOMVersion.Approved==true{
    qbr.value(queryValue(BOMVersion.BOMId));
}
super();

Solution

  • You have two options:

    1. add multiple ranges
    2. add multiple values to one range separated by commna

    Option 1:

    QueryBuildDataSource qbds = q.dataSourceTable(BOMTable);
    QueryBuildRange qbr;
    while (...)
    {
        qbr = qbds.addRange(fieldNum(BOMTable, BOMId));
        qbr.value(queryValue(BOMVersion.BOMId));
    }
    

    Option 2:

    QueryBuildRange qbr = q.dataSourceTable(BOMTable).addRange(fieldNum(BOMTable, BOMId));
    container c;
    while (...)
    {
        c+= queryValue(BOMVersion.BOMId);
    }
    qbr.value(con2str(c));