Цитата:
Сообщение от
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 );
}
, но сдаётся мне, что в общем случае без округления не обойтись