AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.05.2004, 12:19   #1  
Pegiy is offline
Pegiy
Участник
 
159 / 10 (1) +
Регистрация: 22.04.2003
Как можно изменить запрос не пересобирая его
Можно ли без пересобирания запроса отключить группировку по полю?
Есть запрос, накладываются ограничения как на него так и на связанные таблицы,
необходимо выполнить такой же запрос, но без группировки.
PHP код:
qbd query.DataSourceTable(tableNum(SalesPickingListJournalLine));
qbd.orderMode(OrderMode::GroupBy);
qbd.addSortField(fieldNum(SalesPickingListJournalLineItemId));
qbd.addSelectionField(fieldNum(SalesPickingListJournalLine,InventQty), SelectionField::Sum);
....
qbi qbd.addDataSource(tableNum(InventTable));
....
qbs qbd.addDataSource(tableNum(SalesTable));
....
if (
setDetailOrder)
  {
  
qbd2 qbd
  
qbd2 отключить группировку
  
...
  
qbd2.addSortField(fieldNum(SalesPickingListJournalLine,SalesId)); 
  } 
Нужно для того, чтобы вытащив Sum(InventQty) по номенклатуре, получить и все заказы по этой номенклатуре.
Старый 17.05.2004, 13:07   #2  
Джон is offline
Джон
Участник
 
39 / 10 (1) +
Регистрация: 05.08.2003
ИМХО, так

PHP код:

    
if (setDetailOrder)
    {
        
qbd.orderMode(OrderMode::OrderBy);
        
qbd.fields().clearFieldList(); // убираем sum(InventQty) из select
        
...
        
qbd.addSortField(fieldNum(SalesPickingListJournalLine,SalesId));
    } 
Старый 17.05.2004, 13:42   #3  
Pegiy is offline
Pegiy
Участник
 
159 / 10 (1) +
Регистрация: 22.04.2003
Цитата:
Изначально опубликовано Джон
ИМХО, так[/PHP]
спасибо, но видимо это не поможет
как вообще лучше (можно) решить эту задачу
1. получить в одном запросе
и sum(inventQty) и salesId видимо добавив связь SalesPickingListJournalLine самой к себе

или
2. сделать два запроса
один вытаскивает sum (inventQty), второй все salesId для каждой ItemId
тогда непонятно как продублировать query, чтобы заново не собирать все многочисленные связи и фильтры
Старый 17.05.2004, 14:33   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Не знаю, как остальные, но я не понял, что Вы хотите получить вторым запросом (список заказов, список заказов по номенклатурам, что-то другое).

Грохнуть список полей, по которым идет группировка можно так qbDS.sortClear()
Старый 17.05.2004, 14:51   #5  
Pegiy is offline
Pegiy
Участник
 
159 / 10 (1) +
Регистрация: 22.04.2003
Цитата:
Изначально опубликовано Wamr
Не знаю, как остальные, но я не понял, что Вы хотите получить вторым запросом (список заказов, список заказов по номенклатурам, что-то другое).
SalesPickingListJournalLine:
ItemId SalesId InventQty
1 ZKZ1 100
2 ZKZ2 200
3 ZKZ2 300
1 ZKZ3 400

выбираю:

ItemId sum(InventQty)
1 500
2 200
3 300

но хочу еще выбрать и

ItemId SalesId sum(InventQty)
1 ZKZ1 100
1 ZKZ3 400
2 ZKZ2 200
3 ZKZ2 300

Тогда в отчет смогу вывести:

ItemId sum(InventQty)
1 500
SalesId sum(InventQty)
ZKZ1 100
ZKZ1 400
ItemId sum(InventQty)
2 200
SalesId sum(InventQty)
ZKZ2 200
ItemId sum(InventQty)
3 300
SalesId sum(InventQty)
ZKZ3 300
Старый 17.05.2004, 15:20   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Тогда второй запрос - это тотже первый, в который добавили
qbd2.addSortField(fieldNum(SalesPickingListJournalLine,SalesId));

Но если вы поменяете местами строки в отчете, то можно обойтись 1 запросом (2ым)

ItemId
1
SalesId sum(InventQty)
ZKZ1 100
ZKZ1 400
sum(InventQty)
500

ItemId
2
SalesId sum(InventQty)
ZKZ2 200
sum(InventQty)
200
...
Старый 17.05.2004, 15:40   #7  
Pegiy is offline
Pegiy
Участник
 
159 / 10 (1) +
Регистрация: 22.04.2003
Цитата:
Изначально опубликовано Wamr

Но если вы поменяете местами строки в отчете, то можно обойтись 1 запросом (2ым)
...
эээ, не совсем понял
сгруппировать по заказам, а итоговый sum(inventQty) считать отдельно, суммирую вес по каждому заказу?
Старый 17.05.2004, 15:48   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Изначально опубликовано Pegiy

сгруппировать по заказам, а итоговый sum(inventQty) считать отдельно, суммирую вес по каждому заказу?
Да. Или использовать специальный контрол Sum
Старый 18.05.2004, 18:46   #9  
Ю-ю is offline
Ю-ю
Участник
 
23 / 10 (1) +
Регистрация: 23.04.2004
Адрес: Москва
Для копирования запросов можно использовать метод pack() на классе QueryRun. Пример можно посмотреть здесь:
\Classes\SysQuery\countPrim
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Excel, группировки: как программно изменить расположение итоговых данных? CDan DAX: Программирование 5 29.08.2008 18:14
Как изменить фамилию гл.буха в счет-фактуре? AX 3.0. Подскажите... Бриллиантик DAX: Функционал 5 07.05.2008 11:50
Можно ли отключить и включить аналитику? miklenew DAX: Функционал 24 30.01.2008 14:00
Можно ли изменить дату введения в экслуатацию velk DAX: Функционал 2 20.08.2004 17:18
Можно ли изменить Enum типа NoYes или PrintMedium? funnut DAX: Программирование 1 08.07.2004 14:21
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:52.