Mar 9, 2015

How to get integers from X++ string value

static void intCheck(Args _args)
{
#define.lineIncrement(1)
int64 lineConfirm;
str _text;
str _lineConfirm = 'ECM-00451';

lineConfirm = str2Int64(strKeep(_lineConfirm, "0123456789"));

_text = strRem(_lineConfirm, strFmt("%1",lineConfirm));

lineConfirm = lineConfirm+#lineIncrement;
_lineConfirm = _text+ strFmt("%1",lineConfirm);

info(strFmt("%1",_lineConfirm));
}

Mar 4, 2015

How to use "OR" in X++ Query ..

static void projTableJobUsingQuery(Args _args)
{
    Query                   query;
    QueryBuildDataSource    qb, qb1;
    QueryBuildRange         qbr, qbr1;
    QueryRun                qr;
    SalesTable              salesTableLocal;
str salesid1, salesid2;
    str                     custAccountVal = "0000000015";
str                     invoiceAccountVal = "0000000025";
    ;
salesid1 = "ECM-20000091";
salesid2 = "ECM-20000094";
    query = new Query();
    qb = query.addDataSource(tablenum(Salestable));
qb.addRange(fieldnum(Salestable, SalesId)).value(queryRange(salesId1,SalesId2));
    qbr = qb.addRange(fieldnum(Salestable, CustAccount));

// Here the OR condition is implemented.  
    qbr.value(strfmt('((%1.%2 == "%4") || (%1.%3 == "%5"))',
                qb.name(),
                fieldstr(Salestable, CustAccount),
                fieldstr(Salestable, InvoiceAccount),custAccountVal,invoiceAccountVal));

    qr = new QueryRun(query);
    while (qr.next())
    {
        salesTableLocal = qr.get(tablenum(SalesTable));
        info(salesTableLocal.SalesId);
    }

  
}

Jan 4, 2015

Creating dynamic relation for a datasource at form level

public void executeQuery()
{
    QueryBuildDataSource    qbds;
    Query                   qr;
    EcoResProduct           EcoResProduct; 
    ;
    this.query().dataSourceTable(tableNum(xyzEcoResProduct)).clearRanges();
   
    if(FormControl_Filter.valueStr())
    {
        this.query().dataSourceTable(tableNum(xyzEcoResProduct)).relations(false);
        select RecId from EcoResProduct where EcoResProduct.SeriesId == FormControl_Filter.valueStr();
        qbds = this.query().dataSourceTable(tableNum(xyzEcoResProduct));
        qbds.joinMode(JoinMode::InnerJoin);
        qbds.addRange(fieldNum(xyzEcoResProduct, ItemSeries)).value(queryValue(EcoResProduct.RecId));
    }
   
    super();
}