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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.01.2014, 17:50   #1  
DAX13 is offline
DAX13
Участник
 
10 / 10 (1) +
Регистрация: 31.03.2010
вопрос по запросу
Подскажите, пожалуйста, такой синтаксис работает на MS DAX 4.0 ?

queryBuildRange.value(strFmt('((ItemType == %1) || (ItemId == "%2"))', any2int(ItemType::Service), queryValue("Item1")));

У меня ошибку выдает:
Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 24.

Может я что-то делаю не так? Цель запроса: отобрать основной договор и все подчиненные.

X++:
static void Job7(Args _args)
{
    Query                  query = new Query();
    QueryBuildDatasource   qbds  = query.addDataSource(tableNum(RContractTable));
    QueryBuildRange        qbr;
    QueryRun               qr;
    RContractTable         contractTable;
    ;

    qbr = qbds.addRange(fieldnum(RContractTable, RContractAccount));
    qbr = qbds.addRange(fieldnum(RContractTable, ML_RContractParentAccount));
    qbr.value(strFmt('((RContractAccount == %1) || (ML_RContractParentAccount == "%2"))',   "Дог0001", "Дог0001"));

    qr = new QueryRun(query);
 
    while (qr.next())
    {
        contractTable = qr.get(tableNum(RContractTable));
    }
}
Старый 28.01.2014, 17:59   #2  
michel1971 is offline
michel1971
Участник
 
79 / 80 (3) ++++
Регистрация: 14.01.2011
а вот так
X++:
qbr.value(strFmt('((RContractAccount == "%1") || (ML_RContractParentAccount == "%2"))',   "Дог0001", "Дог0001"));
Старый 28.01.2014, 18:47   #3  
DAX13 is offline
DAX13
Участник
 
10 / 10 (1) +
Регистрация: 31.03.2010
Цитата:
Сообщение от michel1971 Посмотреть сообщение
а вот так
X++:
qbr.value(strFmt('((RContractAccount == "%1") || (ML_RContractParentAccount == "%2"))',   "Дог0001", "Дог0001"));
Не понял, что Вы этим хотите сказать. Такой код у меня не работает. Выдает ошибку.
Возможно, проблема скрыта в этих строчках:
qbr = qbds.addRange(fieldnum(RContractTable, RContractAccount));
qbr = qbds.addRange(fieldnum(RContractTable, ML_RContractParentAccount));

Но не пойму как по другому связать QueryBuildRange и QueryBuildDatasource.

Последний раз редактировалось DAX13; 28.01.2014 в 18:56.
Старый 28.01.2014, 18:51   #4  
michel1971 is offline
michel1971
Участник
 
79 / 80 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от DAX13 Посмотреть сообщение
Не понял, что Вы этим хотите сказать. Такой код у меня не работает. Выдает ошибку.
если не видите отличий, то просто скопируйте
За это сообщение автора поблагодарили: DAX13 (1).
Старый 29.01.2014, 07:22   #5  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
В первом случае у вас нет двойных кавычек, а должны быть
X++:
'((RContractAccount == "%1")...'
__________________
// no comments
За это сообщение автора поблагодарили: DAX13 (1).
Старый 29.01.2014, 14:59   #6  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
В дополнение, видел рекомендации на форуме и в статьях (да и в ссылках выше это проиллюстрировано), что комплексные критерии лучше создавать на основе полей, которые обычно наименнее задействованых при запросах к этой таблице из бизнес-логики. Например, DataAreaId, TableId, реже, RecId.

В одной из статей выше сказано:
"The range is then added, using the DataAreaId field on each table. Any field can be used, but using an unusual one such as DataAreaId helps remind a casual reader of the code that it's not a normal range."

Последний раз редактировалось Cardagant; 29.01.2014 в 15:49.
Теги
query

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
условие с датой в Query romanja DAX: Программирование 5 07.04.2011 10:25
Как прикрутить в query условие vale15 DAX: Программирование 1 11.09.2007 11:00
Как в range на одно и тоже контейнерное поле поставить условие: "исключ." && like Pustik DAX: Программирование 15 03.07.2004 11:54
Фильтр в Query по двум полям ArturK DAX: Программирование 1 15.03.2004 13:17

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

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

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