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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.05.2011, 12:54   #1  
ZornFire is offline
ZornFire
MS Dynamics AX 2012 R3
Аватар для ZornFire
Oracle
Злыдни
Ex AND Project
 
333 / 76 (3) ++++
Регистрация: 12.01.2009
Адрес: Москва
Как то не то.
Вот мой метод:
Х++
Цитата:
void makeQueryRun()
{
Query query = new query();
QueryBuildDataSource qbds, qbds1,qbds2,qbds3;
QueryBuildRange qbr;
RAssetStandards rAssetStandards,_rassetStandards;
RAssetTable rAssetTable;
RAssetTrans rAssetTrans;
RAssetSumCalc_Trans rAssetSumTrans;
TransDate transDate;
;
qbds = query.addDataSource(tableNum(RAssetTable));
// группировка по статусу -->
qbds.addSortField(fieldNum(RAssetTable, Status));
qbds.orderMode(OrderMode::GroupBy);
// группировка по статусу --<
qbds.addRange(fieldNum(RAssetTable, Status)).value(QueryValue(RAssetStatus::Closed)); // фильтр на Закрыто
qbds.addRange(fieldNum(RAssetTable, Status)).value(QueryValue(RAssetStatus:: Disposed)); // фильтр на Списано
qbds.addRange(fieldNum(RAssetTable, Status)).value(QueryValue(RAssetStatus::Sold)); // фильтр на Продано
// вывод значения номера ОС при группировке -->
qbds.addSortField(fieldNum(RAssetTable, AccountNum));
qbds.orderMode(OrderMode::GroupBy);
qbds.addRange(fieldNum(RAssetTable, AccountNum));
// вывод значения номера ОС при группировке --<
// вывод значения Наименование ОС при группировке -->
qbds.addSortField(fieldNum(RAssetTable, Name));
qbds.orderMode(OrderMode::GroupBy);
qbds.addRange(fieldNum(RAssetTable, Name));
// вывод значения Наименование ОС при группировке --<
qbds1 = qbds.addDataSource(tableNum(RAssetStandards));
qbds1.addLink(fieldNum(RAssetTable,AccountNum),fieldNum(RAssetStandards,AssetId));
// группировка по фильтру Амортизация -->
qbds1.addSortField(fieldNum(RAssetStandards, AssetStandardId));
qbds1.orderMode(OrderMode::GroupBy);
qbds1.addRange(fieldNum(RAssetStandards, AssetStandardId));
// группировка по фильтру Амортизация --<
qbds2 = qbds1.addDataSource(tableNum(RassetTrans));
qbds2.addLink(fieldNum(RAssetStandards,AssetId),fieldNum(RAssetTrans,AccountNum));
qbds2.addLink(fieldNum(RAssetStandards,AssetStandardId),fieldNum(RAssetTrans,AssetStandardId));
// фильтр начислений только по амортизации, группировка и суммирование начисленной амортизации по каждому ОС -->
qbds2.addSortField(fieldNum(RAssetTrans, AccountNum));
qbds2.orderMode(OrderMode::GroupBy);
qbds2.addSelectionField(fieldNum(RAssetTrans, AmountMST), SelectionField::Sum);
// фильтр начислений только по амортизации, группировка и суммирование начисленной амортизации по каждому ОС --<

qbds2.addRange(fieldNum(RAssetTrans, AssetTransType)).value(QueryValue(AssetTransType:: Depreciation));
qbds2.addRange(fieldNum(RAssetTrans, TransDate)).value(QueryRange(fromDate,toDate)); // это для диалога

// info(qbds.toString());
queryRun = new QueryRun(query);
}
Аналогично я хочу запросом получить значение даты
__________________
"Человек человеку волк, а зомби зомби зомби." (с)
С Уважением, Алексей Кабанов

Последний раз редактировалось ZornFire; 26.05.2011 в 12:59. Причина: прорисовка смайлов в коде вместо : D
Старый 26.05.2011, 13:14   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1789 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от mr.ZF Посмотреть сообщение
Как то не то.
Вот мой метод:
Х++

Аналогично я хочу запросом получить значение даты
В приведённом вами query множество строк, по которым идёт суммирование ограничено периодом fromDate..toDate. Вот здесь:
X++:
qbds2.addRange(fieldNum(RAssetTrans, TransDate)).value(QueryRange(fromDate,toDate));
А минимальную дату вам нужно искать не в этом периоде а вообще по всем проводкам. Так?
Ваша задача доработать исходный запрос так чтобы он искал одновременно и сумму и дату? или можно написать новый, который уже не будет искать сумму, а будет искать дату?

offtop: Свойство orderMode для каждого QueryBuildDataSource достаточно задать один раз. Не нужно делать это после каждого addSortField

Последний раз редактировалось S.Kuskov; 26.05.2011 в 13:27.
Старый 26.05.2011, 13:21   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А минимальную дату вам нужно искать не в этом периоде а вообще по всем проводкам. Так?
Ваша задача доработать исходный запрос? или можно написать новый, который уже не будет искать сумму, а будет искать дату?
если честно, мне кажется человеку вообще надо не искать раннюю дату, а получить суммы в разрезе дат и прочих полей
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
выбор из одной таблице и вставка в другую bannov DAX: Программирование 3 26.06.2008 09:20
условие where по полям одной и той же таблицы Starling DAX: Программирование 23 05.03.2008 15:48
Как вычесть из одной даты другую? Хилари DAX: Программирование 10 27.10.2005 16:05
Как получить записи двух таблиц в виде одной таблицы? chi DAX: Программирование 32 16.12.2004 11:44
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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