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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.09.2010, 09:04   #1  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
...(но это не всегда возможно из-за определения какое условие подставлять И или ИЛИ. если писать в одном range, тогда в запросе будет условие И, а если в нескольких, то ИЛИ. и на эти грабли наступал ).
забыл добавить главный нюанс! так работает при добавлении отрицания в условие запроса, т.е. "!" или SysQuery::valueNot().

вот джобик для наглядности:
X++:
Query                   query;
    QueryBuildDataSource    qbds;
    QueryBuildRange         qbr;
    InventTable             inventTable;
    str                     filter;
    int                     i;
    ;
    // вариант №1 создаем один range и в него через запятую записываем условие -->
    query   = new Query();
    qbds    = query.addDataSource(tableNum(InventTable));
    qbr     = qbds.addRange(fieldNum(InventTable, ItemId));

    while select inventTable
    {
        i++;

        if (filter != '')
            filter += ', ';

        filter += '!' + inventTable.ItemId;

        if (i == 3)
            break;
    }

    qbr.value(filter);

    info('1-ый вариант -->');
    info(query.dataSourceTable(tableNum(InventTable)).toString());
    info('1-ый вариант <--');
    // <--------------------------------------------------------------------------

    i = 0;

    // вариант №2 для каждой номенклатуры добавляем range -->
    query   = new Query();
    qbds    = query.addDataSource(tableNum(InventTable));

    while select inventTable
    {
        i++;

        qbds.addRange(fieldNum(InventTable, ItemId)).value(SysQuery::valueNot(inventTable.ItemId));

        if (i == 3)
            break;
    }

    info('2-ой вариант -->');
    info(query.dataSourceTable(tableNum(InventTable)).toString());
    info('2-ой вариант <--');
    // <-----------------------------------------------------
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: Logger (3).
Теги
query, querybuildrange, range

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передвижка фаз при выборе больше чем одной строки. Форма SMAServiceOrderTable Dima_Dima DAX: Программирование 22 30.04.2009 16:29
Длина строки leshy DAX: Программирование 6 19.03.2008 15:32
axaptapedia: Packing date range values in queries Blog bot DAX Blogs 1 09.11.2007 13:10
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) gl00mie DAX: Программирование 15 30.03.2007 18:37
Длина Range Владимир Максимов DAX: Программирование 18 05.03.2004 08:57
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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