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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.03.2010, 18:12   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
А где можно посмотреть пример такого кода?
Старый 01.03.2010, 18:28   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Деления? Например, у меня здесь: Пользовательский генератор строк-перечислений...- 2: Доп.вкладка для SysQueryForm

P.S. Еще вот такую "статику" у себя отыскал:
X++:
// Created on 01 Сен 2008 at 15:04:08 by KKU
static Set choppedQueryRanges(  Set _conditions = new Set(Types::String),
                                str _separator  = '||' )
{
    // "Нашинкованные диапазоны критериев"

    // на входе - множество условий (каждая строка существенно короче EDT Range)
    // на выходе - множество диапазонов (каждый максимально впихнут в длину EDT Range)
    // примеры элементов множества условий (_conditions):
    // (CenterId=="09000") или (RequestTable.ReasonId=="ВЫБ_Ф")

    Set             setRanges = new Set(Types::String);
    SetEnumerator   enumerator;
    str             curr;
    str             currElem;
    str             currCrit = '';
    str             prevCrit = '';
    int             edtRangeSize =
                        new DictField( tableNum(TmpSysQuery),
                        fieldNum(TmpSysQuery, RangeValue) ).stringLen();
    ;

    enumerator = _conditions.getEnumerator();
    while (enumerator.moveNext())
    {
        curr = enumerator.current();
        currElem = strLTrim( strRTrim (strFmt(curr)));
        if (currElem)
        {
            currCrit = prevCrit + currElem + _separator;

            if ( strLen(currCrit) > (edtRangeSize + strLen(_separator)) )
            {
                setRanges.add( subStr(prevCrit, 1, strLen(prevCrit)-strLen(_separator)) );
                prevCrit = currElem + _separator;
            }
            else
            {
                prevCrit = currCrit;
            }
        }
    }

    if (prevCrit)
    {
        setRanges.add( subStr(prevCrit, 1, strLen(prevCrit)-strLen(_separator)) );
    }

    return setRanges;
}
Каждый элемент выходного Set - содержимое одной клеточки range. Этот метод в принципе то же самое, что в генераторе содержится в методе doProcessButton, только заточено уже под автономное использование.

Последний раз редактировалось Gustav; 01.03.2010 в 18:38.
Теги
query, range, dimensions

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
оптимизируем запросы. SHiSHok DAX: Программирование 18 13.09.2009 21:26
Запросы к связанным таблицам Rect DAX: Программирование 14 05.06.2007 10:16
Производство. Запросы\Развертывание\Обработка не дает нужный результат e@gle DAX: Функционал 11 11.05.2007 18:10
Сложные запросы в RLS Ruff DAX: Администрирование 12 30.08.2005 18:02
Разные запросы в 2-х и 3-х уровневой конфигурациях. Что делать?! Anais DAX: Программирование 12 04.11.2004 12:47

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

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

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