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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2019, 12:42   #1  
dark_knight is offline
dark_knight
Участник
 
20 / 10 (1) +
Регистрация: 20.01.2019
динамический X++ запрос range по нескольким полям
Добрый ден,

Столкнулся с трудностями при переписывании данного SQL запроса:

X++:
    while select BOMId from bomVersion
            group by routeOpr.IsTechnReasonable_ICL,bom.ItemId,ecoResProduct.RecId
            where bomVersion.ItemId==itemIdProduction &&
                  bomVersion.Active == NoYes::Yes &&
                  bomVersion.FromQty == #bomVersionFromQty &&
                  (
                    (bomVersion.FromDate==dateNull() && bomVersion.ToDate == dateNull())||
                    (bomVersion.FromDate<= systemDateGet() && bomVersion.ToDate >= systemDateGet())||
                    (bomVersion.FromDate<= systemDateGet() && bomVersion.ToDate == dateNull())
                  )
данную часть:

X++:
(
                    (bomVersion.FromDate==dateNull() && bomVersion.ToDate == dateNull())||
                    (bomVersion.FromDate<= systemDateGet() && bomVersion.ToDate >= systemDateGet())||
                    (bomVersion.FromDate<= systemDateGet() && bomVersion.ToDate == dateNull())
упростил до:

X++:
bomVersion.FromDate <= systemDateGet()
  && (bomVersion.ToDate == dateNull() || bomVersion.ToDate >= systemDateGet())
Сам запрос на X++:

X++:
static void Job74(Args _args)
{
    Query                   query;
    Queryrun                qr;
    QueryBuildDataSource    qbdsBomVersion;
    BOMVersion              bomVersion;


    query = new Query();
    qbdsBomVersion = query.addDataSource(tableNum(BOMVersion));
    qbdsBomVersion.addRange(fieldNum(BOMVersion,ItemId)).value(queryValue("7075"));
    qbdsBomVersion.addRange(fieldNum(BOMVersion,Active)).value(queryvalue(SysQuery::value(NoYes::Yes)));
    qbdsBomVersion.addRange(fieldNum(BOMVersion,FromQty)).value(queryValue("1"));
    qbdsBomVersion.addRange(fieldNum(BomVersion,FromDate)).value(strfmt("((%1.%2 <= %5) && ((%1.%3 == %4) || (%1.%3 >= %5)))",
                            qbdsBomVersion.name(),fieldstr(BOMVersion,FromDate),fieldStr(BOMVersion,ToDate),date2strXpp(dateNull()),systemDateGet()));

    qr = new QueryRun(query);
    info(qr.query().dataSourceNo(1).toString());
Вот эту часть:

X++:
bomVersion.FromDate <= systemDateGet()
  && (bomVersion.ToDate == dateNull() || bomVersion.ToDate >= systemDateGet())
записал как:

X++:
qbdsBomVersion.addRange(fieldNum(BomVersion,FromDate)).value(strfmt("((%1.%2 <= %5) && ((%1.%3 == %4) || (%1.%3 >= %5)))",
                            qbdsBomVersion.name(),fieldstr(BOMVersion,FromDate),fieldStr(BOMVersion,ToDate),date2strXpp(dateNull()),systemDateGet()));

Возвращаемый SQL запрос такой:

X++:
SELECT * FROM BOMVersion(BOMVersion_1) WHERE ((ItemId = N'7075')) AND ((Active = 1)) AND ((FromQty = 1.E0)) AND ((((BOMVersion_1.FromDate <= 13.02.2019) && ((BOMVersion_1.ToDate == 01\01\1900) || (BOMVersion_1.ToDate >= 13.02.2019)))))
Получаю ошибку расширенно диапозона. Ожидается правая круглая скобка рядом с 35. Подскажите пожалуйста, в чем может быть проблема? Использую подход для наложения range которы йописан здесь:

https://docs.microsoft.com/en-us/dyn...n-query-ranges

Заранее спасибо.

Последний раз редактировалось dark_knight; 13.02.2019 в 13:04.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сделать в lookup поиск по нескольким полям Jurezzz DAX: Программирование 6 31.05.2013 10:45
Запрос по нескольким значениям поля mallard DAX: Программирование 3 26.10.2007 10:38
Динамический запрос на таблицу DataArea PavelSR DAX: Программирование 2 23.07.2007 12:31
Запрос. Отрицание значения при добавлении range'а на поле! IvanS DAX: Программирование 3 11.10.2006 09:41
Динамический запрос Anais DAX: Программирование 2 23.04.2004 10:35

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

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

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