Показать сообщение отдельно
Старый 26.08.2011, 15:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
fatihdemirci: Müşteri cirosunu hesaplayan bir query örneği
Источник: http://www.fatihdemirci.net/index.ph...-query-ornegi/
==============

Merhaba Müşteri adatandırma adıyla yaptığım bir raporda kullandığım müşterinin belli kriterlere göre cirosunu hesaplayan query’ i paylaşıyorum. Burda Query kullanmamın asıl  sebebi range olarak verilecek olan değerlerin bazen boşta gelebiliyor olması. Boş olma durumununda hesaplanması için query de if le kontroller yapmak zorunda kaldım. 
Metodu çağıran kod şöyle:
X++:
element.sumCiro(CustTrans.AccountNum, CustTrans.OrderAccount,
                         CustTrans.ETGSalesResponsible , CustTrans.ETGSalesUnitId);
Metodumuz şöyle: Selamlar.
X++:
void sumCiro(AccountNum _accountNum , CustAccount _custAccount , EmplId _emplId , smmSalesUnitId _unitId)
{
    CustTrans   custTrans;
 
    Query                   q;
    QueryRun                qRun;
    QueryBuildDataSource    qbdsCustTrans;
    QueryBuildRange         qbrEmplID;
    QueryBuildRange         qbrCustAccount;
    QueryBuildRange         qbrAccountNum;
    QueryBuildRange         qbrUnitId;
 
    ;
    Ciro = 0;
 
    q   = new query();
    qbdsCustTrans = q.addDataSource(tableNum(CustTrans));
    qbdsCustTrans.addSelectionField(fieldNum(CustTrans, AmountMst), SelectionField::Sum);
 
    if(printAccountNum)
    {
        qbrAccountNum = qbdsCustTrans.addRange(fieldNum(CustTrans, AccountNum));
        qbrAccountNum.value(sysQuery::value(_accountNum));
    }
    if(printOrderAccount)
    {
        qbrCustAccount = qbdsCustTrans.addRange(fieldNum(CustTrans, OrderAccount));
        qbrCustAccount.value(sysQuery::value(_custAccount));
    }
    if(printSalesRes)
    {
        qbrEmplID = qbdsCustTrans.addRange(fieldNum(CustTrans, ETGSalesResponsible));
        qbrEmplID.value(sysQuery::value(_emplId));
    }
    if(printUnitID)
    {
        qbrUnitId = qbdsCustTrans.addRange(fieldNum(CustTrans, ETGSalesUnitId));
        qbrUnitId.value(sysQuery::value(_unitId));
    }
 
    qbdsCustTrans.addRange(fieldNum(CustTrans, ETGReversed)).value(sysQuery::value( ETGReverseType::No));
    qbdsCustTrans.addRange(fieldNum(CustTrans,
               TransType)).value(sysQuery::valueNot( LedgerTransType::Settlement));
 
    qbdsCustTrans.addRange(fieldnum(CustTrans, TransDate)).value(sysquery::range(startDate , endDate));
    qbdsCustTrans.addRange(fieldnum(CustTrans, AmountMST)).value('( AmountMST > 0 )');
 
    qRun = new QueryRun(q);
    while(qRun.next())
    {
       custTrans = qRun.get(tableNum(CustTrans));
 
       Ciro = CustTrans.AmountMST;
 
    }
}
Источник: http://www.fatihdemirci.net/index.ph...-query-ornegi/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.

Последний раз редактировалось Poleax; 26.08.2011 в 16:06. Причина: код