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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.08.2013, 09:20   #1  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Ax 2012. Копирование Range из Query
Коллеги, добрый день! Столкнулся с непонятной ситуацией. Не понимаю что, я делаю не так. Есть форма с фильтрами для запуска отчёта с кнопкой ВЫБОР. Пользователь нажимает кнопку и задает нужные ему фильтры. затем эти фильтры мне нужно скопировать в другой квери. Что имеем:

1. Запрос на кнопке выбор:

X++:
void initQuery()
{
    Query                   query = new Query();
    QueryBuildDataSource    qbdsTable;
    QueryBuildDataSource    qbdsLine;
    ;
    qbdsTable = query.addDataSource(tablenum(PurchMarkupRptTable));
    qbdsTable.addGroupByField(fieldNum(PurchMarkupRptTable PurchId));
    qbdsTable.addGroupByField(fieldNum(PurchMarkupRptTable RequestNumOfCarrier));
    qbdsTable.addGroupByField(fieldNum(PurchMarkupRptTable, VendAccount));

    qbdsLine  = qbdsTable.addDataSource(tableNum(PurchMarkupRptLine));
    qbdsLine.relations(true);
    qbdsLine.joinMode(JoinMode::ExistsJoin);

    queryrun  = new SysQueryRun(query);
}
2. Затем в run накладываю ограничения на дату

X++:
this.queryRun().query().dataSourceTable(tableNum(PurchMarkupRptTable)).addRange(fieldNum(PurchMarkupRptTable DeliveryDate)).value(SysQuery::range(fromDate, toDate));
3. К примеру, пользователь установил фильтр по полю валюта. имеем запрос вида

NAME:
queryRun
VALUE:
Query object 138c3128: SELECT * FROM PurchMarkupRptTable(PurchMarkupRptTable_1) GROUP BY PurchMarkupRptTable.PurchId, PurchMarkupRptTable.RequestNumOfCarrier, PurchMarkupRptTable.VendAccount WHERE ((DeliveryDate>={ts '2013-01-01 00:00:00.000'} AND DeliveryDate<={ts '2013-12-31 00:00:00.000'})) AND ((PurchMarkupRptTable(PurchMarkupRptTable_1).CurrencyCode = N'AMD')) EXISTS JOIN * FROM PurchMarkupRptLine(PurchMarkupRptLine_1) WHERE PurchMarkupRptTable.LineNumber = PurchMarkupRptLine.LineNumber AND PurchMarkupRptTable.PurchId = PurchMarkupRptLine.PurchId
TYPE:
QueryRun
4. переписываю рейнджи в новый квери, запрос из пункта 3 лежит в queryRun

X++:
    for (i = 1; i <= queryRun.query().dataSourceCount(); i++)
    {
        qbdsFrom = queryRun.query().dataSourceNo(i);

        for (j = 1; j <= qbdsFrom.rangeCount(); j++)
        {
            qbrFrom = qbdsFrom.range(j);

            if (qbrFrom.value())
            {
                qbr = q.dataSourceNo(i).addRange(qbdsFrom.range(j).field());
                qbr.value(qbrFrom.value());
            }
        }
    }
Проблема в том, что выбранные пользователем фильтры такая штука в упор не видит. Кроме тех, которые наложены на поля из уникального индекса и фильтра на дату. Так же смущает
AND ((PurchMarkupRptTable(PurchMarkupRptTable_1).CurrencyCode = N'AMD')), почему не
AND CurrencyCode = N'AMD'???

Что я делаю не так? Заранее спасибо

Последний раз редактировалось Sada; 22.08.2013 в 09:24.
Старый 22.08.2013, 09:56   #2  
eugene egorov is offline
eugene egorov
Участник
Аватар для eugene egorov
 
273 / 97 (4) ++++
Регистрация: 05.06.2002
Адрес: Москва
Почитай \Classes\SysQuery\mergeFilters и истина откроется для тебя
__________________
любитель портвейна и снов с прокисшей капустой в усах
За это сообщение автора поблагодарили: Sada (5), ice (1), NickMDAX (1).
Старый 22.08.2013, 10:10   #3  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Блиииин, я так и знал, что что-то забыл. Спасибо!!!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
sumitsaxfactor: Create Your First Custom Service [AX 2012] Blog bot DAX Blogs 0 19.05.2012 19:14
Dynamics AX Sustained Engineering: Servicing of Dynamics AX 2012 and Dynamics AX 2012 Feature Pack Blog bot DAX Blogs 0 08.05.2012 23:12
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
dynamics-ax: Interview with Microsoft's Lachlan Cash on his new role, AX 2012 and more Blog bot DAX Blogs 6 22.04.2011 14:55
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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