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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.03.2012, 16:28   #1  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Создать объект Query из QueryBuildDataSource
Добрый день. Есть необходимость из определeнного QBDS создать новый объект Query. Существуют ли способы кроме как полного перебора и копирования Ranges и Links?

вот простецкий способ (для qbds без джоинов и сортировок) набросал :

X++:
Query queryFromQbds(QueryBuildDataSource _sourceQbds)
{
    Query                   ret     = new Query();
    QueryBuildDataSource    dsDest  = ret.addDataSource(_sourceQbds.table());
    QueryBuildRange         rangeDest, rangeSrc;
    int                     i, cntRange;
    ;
    cntRange = _sourceQbds.rangeCount();
    for(i = 1; i <= cntRange; i++)
    {
        rangeSrc = _sourceQbds.range(i);

        rangeDest = dsDest.addRange(rangeSrc.field());
        rangeDest.value(rangeSrc.value());
    }
    return ret;
}
Старый 19.03.2012, 16:40   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
Добрый день. Есть необходимость из определeнного QBDS создать новый объект Query. Существуют ли способы кроме как полного перебора и копирования Ranges и Links?

вот простецкий способ (для qbds без джоинов и сортировок) набросал :
как то так
X++:
Query q1 = new Query();
Query q2;
;

// создание запроса q1...

q2 = new Query(q1);
// и тд...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем

Последний раз редактировалось lev; 19.03.2012 в 16:43.
Старый 19.03.2012, 16:41   #3  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Цитата:
Сообщение от lev Посмотреть сообщение
как то так
X++:
Query q1 = new Query();
Query q2 = new Query(q1);
у меня нет q1 )
у меня есть только qbds1 (допустим я его извлек из q1 , по номеру необходимой таблицы qbds1 = q1.tableDataSource(tableNum(empltable)), в q1 много других qbds)
и на основе qbds1 нужно создать q2, а дальше qr2 гонять

Последний раз редактировалось Андрей К.; 19.03.2012 в 16:45.
Старый 19.03.2012, 16:46   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
у меня нет q1 )
у меня есть только qbds1 (допустим я его извлек из q1 , по номеру необходимой таблицы qbds1 = q1.tableDataSource(tableNum(empltable), в q1 много других qbds)
и на его основе нужно создать q2
не понял... не может быть что есть qbds, а query нету потому что qbds инициализируется с помощью query.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 19.03.2012, 16:46   #5  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Цитата:
Сообщение от lev Посмотреть сообщение
не понял... не может быть что есть qbds, а query нету потому что qbds инициализируется с помощью query.
у меня есть только qbds1 (допустим я его извлек из q1 , по номеру необходимой таблицы qbds1 = q1.tableDataSource(tableNum(empltable)), в q1 много других qbds переджойненых)
и на основе qbds1 нужно создать q2, а дальше qr2 гонять
Старый 19.03.2012, 17:05   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Андрей К. Посмотреть сообщение
у меня есть только qbds1 (допустим я его извлек из q1 , по номеру необходимой таблицы qbds1 = q1.tableDataSource(tableNum(empltable)), в q1 много других qbds переджойненых)
и на основе qbds1 нужно создать q2, а дальше qr2 гонять
аа, вон оно чо
способа прямого копирования qbds из одного query в другой я не знаю... может кто поделится опытом, мне тоже стало интересно, возможно такое или нет
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 19.03.2012, 18:33   #7  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
ну совсем готового кода скорее всего в стандарте нет. на классе SysQuery есть несколько мелких копировщиков (mergeRanges, copyDynalinks и т.д.) Но возможно вам это даже и не нужно. Вместо копирования нужных датасорсов в новый запрос просто можно отключать ненужные через qbds.enabled()
Старый 19.03.2012, 19:35   #8  
Андрей К. is offline
Андрей К.
Постигающий
 
152 / 10 (1) +
Регистрация: 09.04.2007
Цитата:
Сообщение от db Посмотреть сообщение
ну совсем готового кода скорее всего в стандарте нет. на классе SysQuery есть несколько мелких копировщиков (mergeRanges, copyDynalinks и т.д.) Но возможно вам это даже и не нужно. Вместо копирования нужных датасорсов в новый запрос просто можно отключать ненужные через qbds.enabled()
тоже вполне сгодится!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Calling the Query Service Blog bot DAX Blogs 0 18.02.2012 01:13
AIF: OData Query Service Blog bot DAX Blogs 0 24.08.2011 09:11
jinx: Dynamics AX &ndash; Query-Ranges und Filtereinstellungen des Benutzers Blog bot DAX auf Deutsch 0 04.02.2010 00:05
AX2009: Как создать Query со сложним условием t1.f1 = str(t2.f2) ? andriy_s DAX: Программирование 5 01.09.2009 16:23
Как в query создать relation вида... Maxim Gorbunov DAX: Программирование 10 05.04.2002 21:02
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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