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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.06.2008, 10:37   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Конечно я ожидал ответы что будете говорит что использовать Query. Но просто было интересно может кто знает как такой хитрый критерий использовать. Я просто изначально не знаю какой критерий соберет пользователь. Строка критерия хранится в одной таблице. Разумно конечно сразу прибегнуть к Query.
Но тогда другой вопрос.. а как быть с агрегатными функциями в Query? (к примеру SUM или другие)
Старый 19.06.2008, 10:45   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
А если как-то вот так?
X++:
static void test_SQL_Imitation(Args _args)
{
    #macrolib.SQL_Imitation

    LedgerTable ledgerTable;
    ;

    // имитация: WHERE ledgerTable.AccountNum BETWEEN '01' AND '02яяяя'
    while select ledgerTable
        where #sqlBetween( ledgerTable.AccountNum, ['01','02яяяя'] )
    {
        info (ledgerTable.AccountNum);
    }

    info ('-------------------------');

    // имитация: WHERE ledgerTable.AccountNum IN ('01.20.00','01.50.00','01.70.00','02.30.00','02.40.00','02.60.00')
    // ! для прогона здесь следует подставить конкретные значения из плана счетов своей системы
    while select ledgerTable
        where #sqlIn( ledgerTable.AccountNum, ['01.20.00','01.50.00','01.70.00','02.30.00','02.40.00','02.60.00'] )
    {
        info (ledgerTable.AccountNum);
    }
}
где глобальный макрос SQL_Imitation примерно следующий:
X++:
#LOCALMACRO.sqlBetween
    (%1 >= conpeek(%2, 1) && %1 <= conpeek(%2, 2))
#ENDMACRO

#LOCALMACRO.sqlIn
    (  %1 == conpeek(%2, 1)
    || %1 == conpeek(%2, 2)
    || %1 == conpeek(%2, 3)
    || %1 == conpeek(%2, 4)
    || %1 == conpeek(%2, 5)
    || %1 == conpeek(%2, 6)
    || %1 == conpeek(%2, 7)
    || %1 == conpeek(%2, 8)
    || %1 == conpeek(%2, 9)
    || %1 == conpeek(%2,10)
    )
#ENDMACRO
P.S. 13.08.2010. Через 2 года история имела продолжение здесь: select в X++ и список значений в условии where

Последний раз редактировалось Gustav; 13.08.2010 в 12:50.
Старый 19.06.2008, 10:47   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Poleax Посмотреть сообщение
а как быть с агрегатными функциями в Query?
Нормально там с агрегатными функциями.

Не парьтесь. Нарисуйте query в AOT. мышкой. попереключайте свойства и режимы.
в коде сделайте только одну строчку

Query q = new Query(querystr(mySuperQueryFromAOT));
__________________
полезное на axForum, github, vk, coub.
Теги
query, select

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
OZKA's DAX Journal: Модификация формы "Должностные лица". Blog bot DAX Blogs 0 30.09.2008 22:05
gatesasbait: Reverse keyword on Select Statements Blog bot DAX Blogs 0 08.02.2008 00:10
Можно ли в Аксапте делать "горячие клавиши"? Garic DAX: Программирование 12 25.01.2006 19:51
Как использовать значение переменной в Select-е kaw DAX: Программирование 5 23.04.2004 11:13
Зарплата-Карточка сотрудника-"профсоюз". Как использовать в расчетах?. DSV DAX: Функционал 5 16.07.2003 13:46
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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