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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.10.2009, 10:10   #1  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,821 / 402 (17) +++++++
Регистрация: 23.03.2006
2 sukhanchik: а можно привести исходный код медода queryAddDynaCursorAsRangeAndValue(), а то у меня его нет
Старый 28.10.2009, 10:19   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от ice Посмотреть сообщение
2 sukhanchik: а можно привести исходный код медода queryAddDynaCursorAsRangeAndValue(), а то у меня его нет
X++:
// This method will traverse dynalinks on QueryBuildDataSource represented by _queryDynaBdsNo
// and convert current dyna-record into ranges and values on that QueryBuildDataSource
static client server void queryAddDynaCursorAsRangeAndValue(
    Query   _query,             // new query
    Query   _queryDyna,         // query having external links (=dyna links)
    Integer _queryDynaBdsNO     // queryBuildDataSource on _queryDyna having external links
    )
{
    QueryBuildRange     toQbr;
    QueryBuildDynalink  qbDyna;
    Counter             dynaLinkNo = 1;
    Counter             toI;
    DictField           dictField;
    Integer             dictIndex;
    Integer             originalId;
    Integer             queryDsNO = _queryDynaBdsNO;
    fieldId             id;
    ;
    if (!_queryDynaBdsNO)
        return;

    if (!_query || !_queryDyna)
        throw error(strfmt("@SYS23669",funcname()));

    if (!_queryDyna.dataSourceNo(_queryDynaBdsNO))
        throw error(strfmt("@SYS23667",funcname()));

    if (_query.dataSourceCount() < _queryDynaBdsNO || _query.dataSourceNo(_queryDynaBdsNO).file() != _queryDyna.dataSourceNo(_queryDynaBdsNO).file())
    {
        _query.addDataSource(_queryDyna.dataSourceNo(_queryDynaBdsNO).file());
        queryDsNO = _query.dataSourceCount();
    }
    while (dynaLinkNo <= _queryDyna.dataSourceNo(_queryDynaBdsNO).dynalinkCount())
    {
        qbDyna      = _queryDyna.dataSourceNo(_queryDynaBdsNO).dynalink(dynaLinkNo);
        id          = fieldExt2Id(qbDyna.field());
        originalId  = id;
        toQbr       = null;

        if (_query.dataSourceNo(queryDsNO).findRange(id))
        {
            toI = 1;
            while (true)
            {
                toQbr  = _query.dataSourceNo(queryDsNO).findRange(id,toI);
                if (!toQbr || !toQbr.value() || toQbr.value() == queryValue(qbDyna.cursor().(qbDyna.dynamicField())))
                    break;
                toI++;
            }
        }
        if (!toQbr || (toQbr && toQbr.value() && queryValue(qbDyna.cursor().(qbDyna.dynamicField())) && toQbr.value() != queryValue(qbDyna.cursor().(qbDyna.dynamicField()))))
        {
            // is this a Dimension field?
            dictField = new DictField(_query.dataSourceNo(queryDsNO).table(),id);

            if (dictField.arraySize() > 1)
            {
                // yes, working with Array field
                dictIndex = originalId >> 16;
                toQbr  = _query.dataSourceNo(queryDsNO).addRange(fieldId2Ext(id, dictIndex));
            }
            else
            {
                toQbr  = _query.dataSourceNo(queryDsNO).addRange(id);
            }
        }
        if (toQbr)
            toQbr.value(queryValue(qbDyna.cursor().(qbDyna.dynamicField())));

        dynaLinkNo++;
    }
}
За это сообщение автора поблагодарили: lev (2).
Теги
dynalink, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как настроить DynaLink или фильтр в форме s.alex DAX: Программирование 9 31.08.2009 14:54
axaptapedia: Tutorial Form Dynalink Blog bot DAX Blogs 0 22.08.2007 23:00
Как программно разорвать или восстановить соединение через AxaptaCOMConnector? sschainik DAX: Программирование 3 24.11.2006 08:49
Ошибка (?) в периодических журналах ГК Anais DAX: Функционал 1 10.06.2005 13:20
Создание строк в журналах ГК May DAX: Функционал 2 03.01.2004 23:29
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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