|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от Rimantas
![]() Код: Query qInvSum2( Query qry ) { QueryBuildDataSource qBSSum; QueryBuildDataSource qBSTrn; ; qBSSum = qry.dataSourceTable( TableNum( InventSum ) ); qBSSum.addSortIndex( indexnum( InventSum, LocateItemIdx ) ); qBSSum.indexIsHint( true ); qBSSum.addRange( fieldNum( InventSum, PhysicalInvent ) ).value( queryvalue( '!= 0' ) ); qBSTrn = qBSSum.addDataSource( tableNum( InventTrans ) ); qBSTrn.addLink( fieldNum( InventTrans, InventDimId ), fieldNum( InventSum, InventDimId ) ); qBSTrn.addLink( fieldNum( InventTrans, ItemId ), fieldNum( InventSum, ItemId ) ); qBSTrn.addSortIndex( indexNum( InventTrans, DimIdIdx ) ); qBSTrn.indexIsHint( true ); qBSTrn.addRange( fieldNum( InventTrans, DatePhysical ) ).value( SysQuery::range( dBgn, dateMax() ) ); qBSTrn.joinMode( JoinMode::NoExistsJoin ); // qBSTrn.firstOnly( true ); //qBSTrn.fetchMode( QueryFetchMode::One2One ); return qry; } Цитата:
WHERE ((InventLocationId = LS)) AND ((ItemId = 1014c))
|
|
![]() |
#2 |
Участник
|
Цитата:
Из-за сkорости я формирую 2 квери из основной . Одно с exist join , другое - notexist . Моя ошибка была , что в начяле в фетче я присваивал так : qr1 = element.query(); qr2 = element.query(); а надо делать так : qr1 = new Query( element.query() ); qr2 = new Query( element.query() ); Ето потому что дальше я поддаю ети квери на методы классы : qr1 = mojaKlass.qInvSum1( qr1 ); ... qr2 = mojaKlass.qInvSum2( qr2 ); Теперь резултат хороший . Спасибо Вам ! :-) |
|
![]() |
#3 |
Участник
|
Ещё одна просьба ...
![]() Как можно перевести ето : Код: 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 ); } Спасибо ! ![]() |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от 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 ); } Код: nPrdSum += Currency::Amount(custInvTrns.LineAmount * ( custInvJrn.ExchRate ? custInvJrn.ExchRate / 100 : 1 )) Код: 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 ); } |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от S.Kuskov
![]() если вы уверены, в том что вот здесь вам совершенно точно не нужно округление:
Код: nPrdSum += Currency::Amount(custInvTrns.LineAmount * ( custInvJrn.ExchRate ? custInvJrn.ExchRate / 100 : 1 )) Код: 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 ); } ![]() Но я думал обо том , как сделать с одним select , то ето похоже так : Код: 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; |
|
Теги |
query |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|