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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.07.2017, 15:10   #1  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
654 / 125 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Having в Query - возможно ли и как, если возможно
Собственно, сабж:

- есть Query, построенный из кода, посредством QueryBuild* классов
- очень хочется добавить условие а-ля Having Sum(zzz) > 123, но прямых путей для этого я не знаю.

Если кто такой путь знает - прямой, либо даже кривой - очень обяжете советом
__________________
Best Regards,
Roman
Старый 10.07.2017, 15:13   #2  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,262 / 247 (11) ++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Аксапта-то какая? В 2012 вроде можно строить квери по calculated fields (могу ошибаться, уже два года с ней не работал, но вроде так)
__________________
С уважением,
Вячеслав
Старый 10.07.2017, 15:27   #3  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
223 / 203 (7) ++++++
Регистрация: 27.02.2006
Адрес: Дания
Если Аксапта 2012я, то вместо программирования можно создать новый View с полем SumOfZzz (у поля свойство Aggregation = Sum), и в QueryBuild* использовать этот View.
Старый 10.07.2017, 15:33   #4  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
654 / 125 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от pitersky Посмотреть сообщение
Аксапта-то какая? В 2012 вроде можно строить квери по calculated fields (могу ошибаться, уже два года с ней не работал, но вроде так)
Виноват.

Ax 2009.
__________________
Best Regards,
Roman
Старый 10.07.2017, 15:35   #5  
fed is offline
fed
Moderator
Ex AND Project
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,151 / 3946 (136) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Если Аксапта 2012я, то вместо программирования можно создать новый View с полем SumOfZzz (у поля свойство Aggregation = Sum), и в QueryBuild* использовать этот View.
Ну этот подход и в версии 2009 замечательно работал, так что топик-стартеру вполне может подойти.
Старый 10.07.2017, 17:52   #6  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,608 / 3395 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от RVS Посмотреть сообщение
- очень хочется добавить условие а-ля Having Sum(zzz) > 123, но прямых путей для этого я не знаю.

Если кто такой путь знает - прямой, либо даже кривой - очень обяжете советом
только через прямой запрос и ResultSet. со всеми вытекающими последствиями. это как правка реестра.

я даже классик для собственного удобства делал. https://github.com/mazzy-ax/SysResultSet
см. пример использования https://github.com/mazzy-ax/SysResul...sultSet_AX.xpo
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.

Последний раз редактировалось mazzy; 10.07.2017 в 17:59.
Старый 10.07.2017, 17:58   #7  
Pokersky09 is offline
Pokersky09
Участник
 
21 / 45 (2) +++
Регистрация: 15.11.2012
Адрес: Казань
Без создания View можно.
Программно задавать ограничения можно на уровне Query.

Пример с SUM отладить не удалось (за пару минут), но Count точно работает.

X++:
static void HavingJob(Args _args)
{
    Query                   query;
    QueryBuildDataSource    datasource;
    QueryHavingFilter       havingFilter;
    
    QueryRun                queryRun;
    LedgerJournalTable      LedgerJournalTable;

    query = new Query();
    
    datasource = query.addDataSource(tableNum(LedgerJournalTable));
    
    datasource.addSelectionField(fieldNum(LedgerJournalTable,   RecId), SelectionField::Count);
    datasource.addGroupByField(fieldNum(LedgerJournalTable,     JournalType));
    
    havingFilter = query.addHavingFilter(datasource, fieldStr(LedgerJournalTable, JournalType), AggregateFunction::Count);
    havingFilter.value('=1');

    queryRun = new QueryRun(query);
    while (queryRun.next())
    {
        LedgerJournalTable = queryRun.getNo(1);
        
        info(strFmt('Group %1: %2', LedgerJournalTable.JournalType, LedgerJournalTable.RecId));
    }
}
Старый 11.07.2017, 11:00   #8  
dech is offline
dech
Участник
Аватар для dech
 
438 / 189 (7) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Цитата:
Сообщение от Pokersky09 Посмотреть сообщение
Без создания View можно.
Программно задавать ограничения можно на уровне Query.
Это можно сделать только в 2012. А топикстартеру нужно реализовать это в 2009.
__________________
// no comments
Старый 12.07.2017, 08:28   #9  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
40 / 26 (1) +++
Регистрация: 19.09.2013
Адрес: Украина, Одесса
Делайте выборку с условием из View2 имеющего в datasource ранее созданный View1 c GroupBy.
Старый 03.08.2017, 13:17   #10  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
654 / 125 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от mazzy Посмотреть сообщение
только через прямой запрос и ResultSet. со всеми вытекающими последствиями. это как правка реестра.

я даже классик для собственного удобства делал. https://github.com/mazzy-ax/SysResultSet
см. пример использования https://github.com/mazzy-ax/SysResul...sultSet_AX.xpo
Гм... речь о модификации формы "Номенклатура - Запросы - В наличии"
__________________
Best Regards,
Roman
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Microsoft Dynamics AX general performance analysis scripts page 5 Blog bot DAX Blogs 0 01.09.2014 14:11
AIF: OData Query Service Blog bot DAX Blogs 0 24.08.2011 09:11
jinx: Dynamics AX – Query-Ranges und Filtereinstellungen des Benutzers Blog bot DAX auf Deutsch 0 04.02.2010 00:05
Query по временной таблице. Возможно ли это? metal DAX: Программирование 2 20.11.2002 14:40
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:33.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.