Monday, 4 January 2016

Dynamic Query

Range:
static void Job11(Args _args)
{
    CustTrans                         custTrans;
    Query                               query;
    QueryBuildRange            queryBuildRange;
    QueryRun                         queryRun;
    QueryBuildDataSource    qbds;
    ;
    query                   = new Query();
    qbds                    = query.addDataSource(tableNum(CustTrans));
 
    qbds.addRange(fieldNum(custTrans,AccountNum)).value("DE-001");
         qbds.addRange(fieldNum(custTrans,TransDate)).value(SysQuery::range("5/19/2016","5/27/2016"));
    queryRun = new QueryRun(query);
 
    while(queryRun.next())
    {
        custTrans = queryRun.get(tableNum(CustTrans));
        info(strFmt("%1,%2,%3",custTrans.AccountNum,custTrans.AmountMST,custTrans.TransDate));
    }

}
--------------------------------------------------------------------------------
CrossCompany:

static void CON_DynamicQueryStatenents(Args _args)
{
    Query                   q;
    QueryBuildDataSource    qbds,qbds1;
    QueryBuildRange         qbr;
    QueryRun                qr;
    VendTable               vendtable;
    VendTrans               vendtrans;
    ;
    q = new Query();
    qbds = q.addDataSource(tableNum(vendtable));
    qbds.firstOnly(true);
    q.allowCrossCompany(true);
    q.addCompanyRange('INMF');
    qbr = qbds.addRange(fieldNum(vendtable,VendGroup));
    qbr.value('50');
    qbds1 = qbds.addDataSource(tableNum(vendtrans));
    qbds1.joinMode(JoinMode::InnerJoin);
    qbds1.addLink(fieldNum(vendtable,AccountNum),fieldNum(vendtrans,AccountNum));
    qr = new QueryRun(q);
    while(qr.next())
    {
        vendtable = qr.get(tableNum(vendtable));
     
        info(strFmt("%1  %2",vendtable.AccountNum,vendtable.VendGroup));
    }

}

-------------------------------------------------------------------------------------------------------------------------
SortOrder:
static void CON_DynamicQueryOneTable(Args _args)
{
   
    Query                       q;
    QueryBuildDataSource        qbds,qbds1;
    QueryRun                    qr;
    QueryBuildRange             qbr;
    VendTable                   vendTable;
    VendTrans                   vendTrans;
    OverlapFields               overlapFields;
    //container                   con = ['inmf'];
    ;


   /* q = new Query();
    qbds = q.addDataSource(tableNum(vendTable));
  // qbds.addGroupByField(fieldNum(vendTable,AccountNum),SortOrder::Descending);
    qbds.addSelectionField(fieldNum(vendTable,AccountNum),SelectionField::Max);
    //qbds.firstOnly(true);
    //qbds.addSortField(fieldNum(vendTable,AccountNum));
    //qbr = qbds.addRange(fieldNum(vendTable,VendGroup));
    //qbr.value("20");
    //qbds1 = qbds.addDataSource(tableNum(vendTrans));
    qr = new QueryRun(q);
    while(qr.next())
    {
        VendTable = qr.get(tableNum(vendTable));
        //VendTrans = qr.get(tableNum(vendTrans));
        info(strFmt("%1    %2",vendTable.AccountNum,vendTable.VendGroup));
        info(qbds.toString());
    }*/


    /*q = new Query();
    qbds = q.addDataSource(tableNum(vendTrans));
    q.allowCrossCompany(true);
    q.addCompanyRange('inmf');
    qbds.addSelectionField(fieldNum(vendTrans,AmountMST),SelectionField::Sum);
    qbds.addGroupByField(fieldNum(vendTrans,AccountNum));    
    qr = new QueryRun(q);
    //qr.allowCrossCompany(true);
    while(qr.next())
    {
        VendTrans = qr.get(tableNum(vendTrans));
        info(strFmt("%1     %2",vendTrans.amountmst,vendTrans.accountnum));
    }*/


   /* q = new Query();
    qbds = q.addDataSource(tableNum(overlapFields));
    qr = new QueryRun(q);
    while(qr.next())
    {
        OverlapFields = qr.get(tableNum(overlapFields));      
        overlapFields.selectForUpdate(true);
        ttsBegin;
        if(overlapFields.First=='1')
        {
            overlapFields.First ='2';
            overlapFields.update();
        }
            info(overlapFields.First);
        ttsCommit;
    }*/

Simple Ex:
 /*CustTable           ct;
    CustTrans           ctr;
    Query               q = new Query(queryStr(CustTable));
    QueryRun            qr = new QueryRun(q);
    while(qr.next())
    {
        ct = qr.get(tableNum(CustTable));
        ctr = qr.get(tableNum(CustTrans));
        info(strFmt("%1  %2",ct.accountnum,ctr.AmountMST));
    }*/

}


-------------------------------------------------------------------------------------------------------------------
FirstOnly:
joinMode:

static void CON_DynamicQuery(Args _args)
{
    Query                   q;
    QueryBuildDataSource    qbds,qbds1;
    QueryBuildRange         qbr;
    QueryRun                qr;
    VendTable               vendTable;
    VendTrans               vendTrans;
    ;
    q       = new Query();
    qbds    = q.addDataSource(tableNum(vendTable));

    qbds.addSortField(fieldNum(vendTable,AccountNum));//,SortOrder::Descending);
    qbds1    = qbds.addDataSource(tableNum(vendTrans));
    qbds1.firstOnly(true);
    //qbds1.firstOnly1(true);
    //qbds.addSortField(fieldNum(vendTrans,AccountNum));
    //qbds1.joinMode(JoinMode::InnerJoin);
    //qbds1.addLink(fieldNum(vendTable,AccountNum),fieldNum(vendTrans,AccountNum));

    qbds.addRange(fieldNum(vendTable,VendGroup)).value('10');
    //qbr = qbds.addRange(fieldNum(vendTable,VendGroup));
    //qbr.value('10');
    qr = new QueryRun(q);
    while(qr.next())
        //info(strFmt("%1",qr.getNo(1).RecId));
    {
        VendTable   =   qr.get(tableNum(vendTable));
        vendTrans   =   qr.get(tableNum(vendTrans));
        info(strFmt("%1  %2   %3",vendTable.AccountNum,vendTable.vendgroup,vendTrans.AmountMST));
    }

-----------------------------------------------------------------------------------------------------
SelectionField(sum):
    Query           q;
    QueryBuildRange qbr;
    queryrun        qr;
    QueryBuildDataSource    qbds,qbds1;
    ;
    q = new Query();
    qbds = q.addDataSource(tableNum(CustTable));
    qbds1 = qbds.addDataSource(tableNum(CustTrans));
    qbds1.addSelectionField(fieldNum(CustTrans,AmountMST),SelectionField::Sum);
    qbds1.relations(true);
    //qbds1.
    qbds.addGroupByField(fieldNum(CustTable,CustGroup));
    qr = new QueryRun(q);
    while(qr.next())
    {
        ct = qr.get(tableNum(CustTable));
        ctr = qr.get(tableNum(CustTrans));
        info(strFmt("%1  %2",ct.CustGroup,ctr.AmountMST));
    }
    info(qr.toString());

}

No comments:

Post a Comment