Query with QueryBuilderDataSource in D365fo In x++

 Query with QueryBuilderDataSource in D365fo In x++

            Query                       query1 = new Query();

            InventTable                 INVENTTABLE;

            InventTrans                 inventTrans;

            InventDim                   INVENTDIM;

            UserInfo                    UserInfo;

            TXLWarehouseSecurity        TXLWAREHOUSESECURITY;


            QueryBuildDataSource                    qbds;

            QueryBuildRange                         queryBuildRange;


            sysTableLookup = SysTableLookup::newParameters(tableNum(InventTable), _formControl);

            //queryBuildDataSource = query.addDataSource(tableNum(InventTable));



            qbds = query.addDataSource(tableNum(InventTable));



            query1.queryType(QueryType::Union);


            qbds1 = query1.addDataSource(tableNum(InventTable));

            qbds1.unionType(UnionType::UnionAll); // Include duplicate records

            qbds1.fields().dynamic(false);

            qbds1.fields().clearFieldList();

            qbds1.fields().addField(fieldNum(InventTable, ItemId));

            qbds1.fields().addField(fieldNum(InventTable, NameAlias));


               


            qbds2 = query1.addDataSource(tableNum(InventTable));

            qbds2.unionType(UnionType::UnionAll); // Include duplicate records

            qbds2.fields().dynamic(false);

            qbds2.fields().clearFieldList();

            qbds2.fields().addField(fieldNum(InventTable, ItemId));

            //qbds2.fields().addField(fieldNum(InventTable, ItemType));

            //qbds2.fields().addField(fieldNum(InventTable, Product));

            qbds2.fields().addField(fieldNum(InventTable, NameAlias));


               


            qbds3 = query1.addDataSource(tableNum(InventTable));

            qbds3.unionType(UnionType::UnionAll); // Include duplicate records

            qbds3.fields().dynamic(false);

            qbds3.fields().clearFieldList();

            qbds3.fields().addField(fieldNum(InventTable, ItemId));

            qbds3.fields().addField(fieldNum(InventTable, NameAlias));

            //qbds3.addSortField(fieldNum(InventTable, ItemId));

            //qbds3.addSortField(fieldNum(InventTable, NameAlias));

            qbds3.orderMode(OrderMode::GroupBy);


               


            qbds4 = qbds3.addDataSource(tableNum(InventTrans));

            qbds4.fields().dynamic(false);

            qbds4.fields().clearFieldList();

            qbds4.fields().addField(fieldNum(InventTrans, ItemId));

            qbds4.fields().addField(fieldNum(InventTrans, inventDimId));


               


            qbds5 = qbds4.addDataSource(tableNum(INVENTDIM));

            qbds5.fields().dynamic(false);

            qbds5.fields().clearFieldList();

            qbds5.fields().addField(fieldNum(INVENTDIM, InventLocationId));

            qbds5.fields().addField(fieldNum(INVENTDIM, inventDimId));

            


               


            qbds6 = qbds5.addDataSource(tableNum(TXLWAREHOUSESECURITY));

            qbds6.fields().dynamic(false);

            qbds6.fields().clearFieldList();

            qbds6.fields().addField(fieldNum(TXLWAREHOUSESECURITY, Location));

            qbds6.fields().addField(fieldNum(TXLWAREHOUSESECURITY, UserRef));

            


               


            qbds7 = qbds6.addDataSource(tableNum(UserInfo));

            qbds7.fields().dynamic(false);

            qbds7.fields().clearFieldList();

            qbds7.fields().addField(fieldNum(UserInfo, RecId));

            qbds7.fields().addField(fieldNum(UserInfo, ID));



            //add joins


            qbds4.joinMode(JoinMode::ExistsJoin);

            qbds4.relations(true);

            qbds4.addLink(fieldNum(InventTable,ItemId),fieldNum(InventTrans,ItemId));


            qbds5.joinMode(JoinMode::ExistsJoin);

            qbds5.relations(true);

            qbds5.addLink(fieldNum(InventTrans,inventDimId),fieldNum(INVENTDIM,inventDimId));


            qbds6.joinMode(JoinMode::ExistsJoin);

            qbds6.relations(true);

            qbds6.addLink(fieldNum(INVENTDIM,InventLocationId),fieldNum(TXLWAREHOUSESECURITY,Location));


            qbds7.joinMode(JoinMode::ExistsJoin);

            qbds7.relations(true);

            qbds7.addLink(fieldNum(TXLWAREHOUSESECURITY,UserRef),fieldNum(UserInfo,RecId));


        

            //add ranges

            qbds1.addRange(FieldNum(InventTable,TxlDirectIndirect)).value(queryValue(TxlDirectIndirect::Indirect));

            qbds1.addRange(FieldNum(InventTable,TxlMaintainable)).value(queryValue(NoYes::No));

            qbds2.addRange(FieldNum(InventTable,TxlDirectIndirect)).value(queryValue(TxlDirectIndirect::Direct));

            qbds2.addRange(FieldNum(InventTable,TxlBulkIssuance)).value(queryValue(NoYes::Yes));

            qbds2.addRange(FieldNum(InventTable,TxlMaintainable)).value(queryValue(NoYes::No));

            qbds7.addRange(FieldNum(UserInfo,ID)).value(curUserId());

Comments

Popular posts from this blog

D365FO – AX – X++ –Refresh, Reread, Research, and ExecuteQuery

Create Inventory Journal through Code in D365FO X++

SalesLine Reservation in D365fo x++