Показать сообщение отдельно
Старый 18.03.2010, 15:34   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Rimantas Посмотреть сообщение
Как можно перевести ето :
Код:
 while select custInvTrns index hint ItemIdIdx where
      custInvTrns.ItemId == invSum.ItemId &&
      custInvTrns.InvoiceDate >= dBgn        &&
      custInvTrns.InvoiceDate <= dEnd        &&
      custInvTrns.InventDimId == invSum.inventDimId
      join custInvJrn where custInvJrn.InvoiceId == custInvTrns.InvoiceId
      {
            nPrd    += custInvTrns.Qty;
            nPrdSum += custInvTrns.LineAmount * ( custInvJrn.ExchRate ? custInvJrn.ExchRate / 100 : 1 );
      }
на селект с sum( )
если вы уверены, в том что вот здесь вам совершенно точно не нужно округление:
Код:
nPrdSum += Currency::Amount(custInvTrns.LineAmount * ( custInvJrn.ExchRate ? custInvJrn.ExchRate / 100 : 1 ))
, то можно попытаться группировать по custInvJrn.ExchRate
Код:
     while select sum(Qty), sum(LineAmount) from custInvTrns 
      group by ExchRate
      index hint ItemIdIdx where
      custInvTrns.ItemId == invSum.ItemId &&
      custInvTrns.InvoiceDate >= dBgn        &&
      custInvTrns.InvoiceDate <= dEnd        &&
      custInvTrns.InventDimId == invSum.inventDimId
      join custInvJrn where custInvJrn.InvoiceId == custInvTrns.InvoiceId
      {
            nPrd    += custInvTrns.Qty;
            nPrdSum += custInvTrns.LineAmount * ( custInvJrn.ExchRate ? custInvJrn.ExchRate / 100 : 1 );
      }
, но сдаётся мне, что в общем случае без округления не обойтись