![]() |
#5 |
Участник
|
GroupBy + Range
Цитата:
Сообщение от Silphidae
![]() Считать сумму Qty сразу же в запросе query нельзя, т.к. ее подсчет зависит от некоторых условий, налагаемых позже.
Смысл сводился к тому, что в таблице InventTrans есть поля ItemId, StatusIssue и Qty, причем, может быть несколько записей с одинаковым значением ItemId. В запросе query на таблицу накладывается некоторый фильтр. И из результата query сначала нужно сосчитать сумму Qty в тех случаях, когда StatusIssue равно OnOrder, а затем когда StatusIssue равно ReservPhysical. X++: static void jbGroupByStatusIssue(Args _args) { InventTrans inventTrans ; QueryRun queryRun ; Query query = new Query() ; QueryBuildDataSource qbdsInventTrans = query.addDataSource( tableNum( InventTrans ) ) ; ; qbdsInventTrans.orderMode( OrderMode::GroupBy ) ; qbdsInventTrans.addSortField( fieldNum(InventTrans, ItemId) ) ; qbdsInventTrans.addSelectionField( fieldNum( InventTrans, Qty), SelectionField::Sum ) ; queryRun = new QueryRun( query ) ; // для примера - доп. условия налагаемые пользователем if( !queryRun.prompt() ) return ; // наложить группировку по inventTrans.StatusIssue и ограничить значения группировки queryRun.query().dataSourceTable(tableNum( InventTrans )).addSortField( fieldNum(InventTrans, StatusIssue ) ); queryRun.query().dataSourceTable(tableNum( InventTrans )).addRange( fieldNum( InventTrans, StatusIssue ) ).value( SysQuery::value( StatusIssue::OnOrder ) ) ; queryRun.query().dataSourceTable(tableNum( InventTrans )).addRange( fieldNum( InventTrans, StatusIssue ) ).value( SysQuery::value( StatusIssue::ReservPhysical ) ) ; while( queryRun.next() ) { inventTrans = queryRun.get( tableNum( InventTrans ) ) ; info( strfmt( "%1 (%2): %3", InventTrans.ItemId, InventTrans.StatusIssue, InventTrans.Qty ) ) ; switch( InventTrans.StatusIssue ) { case StatusIssue::OnOrder : // код по обработке статуса StatusIssue::OnOrder break ; case StatusIssue::ReservPhysical : // код по обработке статуса StatusIssue::StatusIssue::ReservPhysical break ; } } } |
|
|
За это сообщение автора поблагодарили: Silphidae (1). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|