26.08.2011, 15:11 | #1 |
Участник
|
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); 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; } }
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. Последний раз редактировалось Poleax; 26.08.2011 в 16:06. Причина: код |
|
|
|