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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2019, 12:55   #1  
GSP is offline
GSP
Участник
 
33 / 10 (1) +
Регистрация: 14.10.2019
2012, корректировка фильтра
При выборе фильтра SalesOrder, необходимо чтобы выводились только заказы с пустым ServiceOrderType. Сейчас не работает.

X++:
   public void setFilterSales()
{
    Query                       qry = new Query();
    QueryBuildDataSource        qbds = qry.addDataSource(tablenum(TmpCRMPreSalesTable));
    QueryBuildRange             qbr = qbds.addRange(fieldNum(TmpCRMSalesTable, ServiceOrderType));
    
    if (SalesFilterComboBox.selection() == CRMSalesFilter::All)
    {
        qbrSalesOrder.value(SysQuery::valueUnlimited());
    }
    else
    {
        qbrSalesOrder.value(queryValue(SalesFilterComboBox.selection()));

        if(CRMSalesFilter::SalesOrder)
        {
            qbrSalesOrder.value(SysQuery::valueEmptyString());
        }
        
    }
}

Последний раз редактировалось GSP; 05.11.2019 в 13:49.
Старый 05.11.2019, 14:02   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,462 / 969 (35) +++++++
Регистрация: 13.01.2004
Записей в блоге: 3
X++:
    switch (SalesFilterComboBox.selection())
    {
    case CRMSalesFilter::All :
        qbrSalesOrder.value(SysQuery::valueUnlimited());
        break;

    case CRMSalesFilter::SalesOrder :
        qbrSalesOrder.value(SysQuery::valueEmptyString());
        break;

    default :
        qbrSalesOrder.value(queryValue(SalesFilterComboBox.selection()));
        break;
    }
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 05.11.2019, 14:13   #3  
GSP is offline
GSP
Участник
 
33 / 10 (1) +
Регистрация: 14.10.2019
Так получается, что совсем ничего не выводится.
Нужно выводить заказы , у которых только ServiceOrderType пустой
Старый 05.11.2019, 14:27   #4  
GSP is offline
GSP
Участник
 
33 / 10 (1) +
Регистрация: 14.10.2019
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
X++:
    case CRMSalesFilter::SalesOrder :
        qbrSalesOrder.value(SysQuery::valueEmptyString());
        break;

    }
Как это можно подправить?
Старый 05.11.2019, 14:32   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,462 / 969 (35) +++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вот это условие

if (CRMSalesFilter::SalesOrder)

Синтаксически, конечно, допустимо, но логически смысла не имеет. Вы же, наверное, хотели эту константу с чем-то сравнить?

Переменные qry, qbds, qbr в Вашем примере "повисли в воздухе". Они здесь никак не используются


Из Вашего описания не понятно "кто на ком стоял". Поэтому я просто исправил логическую ошибку исходя из написанного кода. Если же это не работает, то Вам надо более подробно описать задачу

1. Поле ServiceOrderType - это одно из полей существующего источника данных формы? Я так понимаю, речь идет о какой-то временной таблице. Эта таблица является источником данных формы (в узле Data Sources в дизайнере формы указана)?
2. Переменная qbrSalesOrder - это Range по какому полю? Она имеет какое-то отношение к ServiceOrderType ?

-----

Если ServiceOrderType - это перечисление (Base Enum), то, возможно, "пустое значение" - это вовсе не 0, а какое-то другое значение. Посмотрите, чему равно "пустое значение". Кстати, попробуйте просто значение 0 указать

qbrSalesOrder.value("0");
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 05.11.2019 в 14:36.
Старый 05.11.2019, 14:39   #6  
GSP is offline
GSP
Участник
 
33 / 10 (1) +
Регистрация: 14.10.2019
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вот это условие

1. Поле ServiceOrderType - это одно из полей существующего источника данных формы? Я так понимаю, речь идет о какой-то временной таблице. Эта таблица является источником данных формы (в узле Data Sources в дизайнере формы указана)?
2. Переменная qbrSalesOrder - это Range по какому полю? Она имеет какое-то отношение к ServiceOrderType ?
1. Да, так и есть
2.
X++:
QueryBuildRange             qbrSalesOrder;
такое объявление в classDeclaration

Изначально был такой код:
X++:
 public void setFilterSales()
{
    
    if (SalesFilterComboBox.selection() == CRMSalesFilter::All)
    {
        qbrSalesOrder.value(SysQuery::valueUnlimited());
    }
    else
    {
        qbrSalesOrder.value(queryValue(SalesFilterComboBox.selection()));
        
    }
}
Но на форме при выборе фильтра SalesOrder - выходят некоторые лишние заказы из ServiceOrder. Отличие в том, что у SalesOrder поле ServiceOrderType всегда пустое, а у ServiceOrder всегда заполнено.
Вот и была мысль проверки через это условие
Старый 05.11.2019, 14:44   #7  
GSP is offline
GSP
Участник
 
33 / 10 (1) +
Регистрация: 14.10.2019
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вот это условие
Посмотрите, чему равно "пустое значение". Кстати, попробуйте просто значение 0 указать

qbrSalesOrder.value("0");
0 также ничего не меняет, Посмотрите, чему равно "пустое значение" такого нет
Старый 05.11.2019, 15:14   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,462 / 969 (35) +++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от GSP Посмотреть сообщение
2.
X++:
QueryBuildRange             qbrSalesOrder;
такое объявление в classDeclaration
Так поищите по коду формы, где происходит присвоение значения этой переменной. Должно быть что-то вроде

qbrSalesOrder = (...);

Интересует, что стоит справа от знака равенства? Это фильтр по какому полю и по какой таблице? Есть какая-то связь с полем ServiceOrderType ?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 05.11.2019, 16:00   #9  
GSP is offline
GSP
Участник
 
33 / 10 (1) +
Регистрация: 14.10.2019
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение

Интересует, что стоит справа от знака равенства? Это фильтр по какому полю и по какой таблице? Есть какая-то связь с полем ServiceOrderType ?
X++:
qbrSalesOrder = this.queryBuildDataSource().addRange(fieldNum(TmpCRMSalesTable, CRMSalesFilter));
    element.setFilterSales();
CRMSalesFilter - edt со значениями фильтра
setFilt - метод, где пишем логику всю со switch case

Последний раз редактировалось GSP; 05.11.2019 в 16:02.
Старый 05.11.2019, 16:12   #10  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,462 / 969 (35) +++++++
Регистрация: 13.01.2004
Записей в блоге: 3
1. Добавляете в ClassDeclaration строку

X++:
QueryBuildRange             qbrSalesOrder;
QueryBuildRange             qbrServiceOrderType;   // Новая переменная
2. Там же, где происходит инициализация переменной qbrSalesOrder инициализируете эту новую переменную. Но до вызова метода с установкой фильтров

X++:
qbrSalesOrder = this.queryBuildDataSource().addRange(fieldNum(TmpCRMSalesTable, CRMSalesFilter));
// Новая переменная
qbrServiceOrderType = this.queryBuildDataSource().addRange(fieldNum(TmpCRMSalesTable, ServiceOrderType));

element.setFilterSales();
3. Меняете код метода setFilterSales() следующим образом

X++:
public void setFilterSales()
{
    
    if (SalesFilterComboBox.selection() == CRMSalesFilter::All)
    {
        qbrSalesOrder.value(SysQuery::valueUnlimited());
    }
    else
    {
        qbrSalesOrder.value(queryValue(SalesFilterComboBox.selection()));
    }

    // Ограничение для новой переменной
    if (SalesFilterComboBox.selection() == CRMSalesFilter::SalesOrder)
    {
        qbrServiceOrderType.value(SysQuery::valueEmptyString());
    }
    else
    {
        qbrServiceOrderType.value(SysQuery::valueUnlimited());
    }

}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: GSP (1).
Старый 11.11.2019, 12:46   #11  
GSP is offline
GSP
Участник
 
33 / 10 (1) +
Регистрация: 14.10.2019
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Так поищите по коду формы, где происходит
}

}[/XPP]
Посмотрие пожалуйста личные сообщения
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
dynamicsaxtraining: Vendor returns Blog bot DAX Blogs 0 11.10.2012 00:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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