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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.10.2006, 09:47   #1  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Вопрос по SysQueryRun
Первый раз решил поработать с запросами, возникли вопросики, подскажите плиз:

1. После объявления всех DataSource, как их связать?
2. Где можно обработать результаты выполнения запроса?
Старый 13.10.2006, 10:03   #2  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Попробуйте поискать код а Аксапте, который оперирует классами Query, QueryRun.
Вопросы отпадают сами с собой (иногда, правда, вместе с челюстью)

С уважением, itfs.
За это сообщение автора поблагодарили: zemlyn (1).
Старый 13.10.2006, 10:08   #3  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Я думаю что таблицы должны связываться в initQuery, только как
Старый 13.10.2006, 10:09   #4  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
1.) Смотрите методы joinDatasource AddLink и т.д.
2.) В своём коде, конечно.
Код:
while (qr.next())
{
   table = qr.getNo(1);
}
Старый 13.10.2006, 10:13   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
1. Связываются объекты QueryBuildDataSource (у дочернего источника) с помощью метода relations с передачей в него параметра true, если существует связь между таблицами в модели данных, или же с использованием метода addLink с указанием поля, по которорму будет связь. addDynaLink - это для форм.
2. В каком смысле где?
У класса есть методы next() для получения следующей записи и метод get() для получения конкретного курсора.
Старый 13.10.2006, 10:19   #6  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Цитата:
Сообщение от Protey Посмотреть сообщение
Я думаю что таблицы должны связываться в initQuery, только как
Нет, посмотрите ветку Relations подчиненного DS.

С уважением, itfs.
Старый 13.10.2006, 10:23   #7  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Что-то типа этого?

queryDataSource1 = query.addDataSource( tablenum( inventTable ));
queryDataSource2 = query.addDataSource( tablenum( inventSum ));
queryDataSource2.relations(true);
Старый 13.10.2006, 10:41   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Protey Посмотреть сообщение
Что-то типа этого?

queryDataSource1 = query.addDataSource( tablenum( inventTable ));
queryDataSource2 = query.addDataSource( tablenum( inventSum ));
queryDataSource2.relations(true);
Да, при этом по ItemID появится связь между двумя источниками.

Альтернативный же вариант такой:
X++:
    queryDataSource2.addLink(fieldNum(InventTable, ItemId), fieldNum(InventSum, ItemId));
Старый 13.10.2006, 10:48   #9  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Сенкс, щас будем пробовать
Старый 13.10.2006, 10:49   #10  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Еще вопрос в догонку, где перечислять поля, выводимые запросом?
Старый 13.10.2006, 10:59   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
метод addSelectionField()

если не перечислять, то все выводятся

напоминаю про Одобрение сообщения
Старый 13.10.2006, 11:01   #12  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
А можно потом из этого Query делать еще выборку простым select'ом
Старый 13.10.2006, 11:05   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нет. простым не получится.

Но всегда можно пройти по выбранным строкам:
X++:
QueryRun qr = new QueryRun(yourQuery);
;
while (qr.next())
{
    iSum = qr.get(tableNum(InventSum));
    info(iSum.itemId);
}
Старый 13.10.2006, 11:36   #14  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
1.) Имхо, AX-300-DVG-002-v01.00-ENUS.chm, там всё написано + примеры.
2.) Я лично очень часто исползую поиск по АОТ для поиска примеров, введите ключевое слово и бы найдёте кучу примеров!!
Старый 13.10.2006, 13:00   #15  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Всем премного благодарен!
Старый 17.10.2006, 07:48   #16  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Еще такой вопросик возник:

Возможно ли создать запрос, чтобы он работал как вот такой select:

select a, sum (b) from table
group by a
Старый 17.10.2006, 09:35   #17  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от Protey Посмотреть сообщение
Еще такой вопросик возник:

Возможно ли создать запрос, чтобы он работал как вот такой select:

select a, sum (b) from table
group by a
Код:
    Query                                    query = new Query(); 
    QueryBuildDataSource            qbds1; 
    ; 
    qbds1 = query.AddDataSource(tablenum(Table)); 
    qbds1.ordermode(ordermode::groupby); 
    qbds1.addSortField(fieldnum(Table, a)); 
    qbds1.addSelectionField(fieldnum(Table, b), selectionField::Sum); 

    info(query.dataSourceNo(1).toString());
Старый 17.10.2006, 09:49   #18  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
А если я потом буду обращаться к этому полю

queryDataSource2.addSelectionField(fieldnum( inventSum, postedQty ), selectionField::Sum);

iSum = queryrun.get(tableNum(InventSum));
info(iSum.PostedQty)

Мне выдаст уже просуммированное значение?
Старый 17.10.2006, 09:58   #19  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Помогите, а то вообще замучался, что я не так написал, прикрепляю проект.

Мне надо собрать запрос по трем таблицам, с группировкой по двух полям.

В цикле
while (queryrun.next())
{

Выдает всего одно значение
Вложения
Тип файла: xpo LastTestRunbaseBatch.xpo (8.6 Кб, 178 просмотров)
Старый 17.10.2006, 10:01   #20  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Protey Посмотреть сообщение
Помогите, а то вообще замучался, что я не так написал, прикрепляю проект.
Не мучайтесь.
Создайте запрос мышкой в AOT. Назовите его myAOTSuperQuery.
в коде напишите одну строчку
X++:
Query q = new Query(querystr(myAOTSuperQuery));
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по модулю Расчеты с персоналом. Выплата заработной платы. Keks DAX: Функционал 7 28.12.2009 10:31
Вопрос по перегрузке лукапа поля прям на таблице HorrR DAX: Программирование 3 03.06.2008 18:02
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36
Вопрос по счетам на оплату поставщикам sergey_alekseev DAX: Функционал 11 26.08.2003 19:43

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

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

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