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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.04.2008, 10:54   #1  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
Таблица RPDocument
поля:
Field1 (NoYesId)
Field2 (EmplId)

при:
Код:
range.value(strFmt('%1.Field1==%2&&(%1.Field2=="")', qbdsJoin.name(), NoYes::Yes));
Всё работает, при добавлении скобок
Код:
'((%1.SelectedDivergence==%2)&&(%1.SelectedSupeVisor==""))'
Уже не работает, выдаёт:
SELECT * FROM ERG_RPDocument WHERE SalesPickingListJournalTable.PickingListId = ERG_RPDocument.PickingListId AND ((((ERG_RPDocument_1.SelectedDivergence==Да)&&(ERG_RPDocument_1.SelectedSupeVisor==""))))
Ошибка расширенного диапазона запроса: Ожидается правая круглая скобка рядом с 0

Ах3 MSSQL2008 вроде

Последний раз редактировалось Dronas; 14.04.2008 в 10:57.
Старый 14.04.2008, 11:18   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Понимаете ли, обычно это занимает много времени, сочинять самому похожие примеры (которые всё равно будут не такие), тем более на какой-то загадочной таблице "RPDocument", которой у меня например нет..
Поэтому я и говорю, чтоб вы привели весь код, который не работает. Лучше всего если это будет тестовый пример на общеизвестных таблицах. Пока будете его делать, сорее всего и с проблемой разберётесь.

Ваш пример очень неполный, является частью какой-то другой квери. Бросается в глаза то, что "ERG_RPDocument_1" <> "ERG_RPDocument", а также отсутствие какого-бы то ни было "0"-ля в запросе, рядом с которым "Ожидается правая круглая скобка"... Именно поэтому и важен целостный пример в таких случаях.

PS
А вообще, зачем вам в дамнном случае эти дополнительные скобки, если не секрет?
Этот случай наиболее правильно сделать 2-мя отдельными нормальными рэнждами, без всяких таких "извратов"...
__________________
Zhirenkov Vitaly
Старый 14.04.2008, 11:21   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Dronas Посмотреть сообщение
Таблица RPDocument, поля: Field1 (NoYesId), Field2 (EmplId)
при:
X++:
range.value(strFmt('%1.Field1==%2&&(%1.Field2=="")', qbdsJoin.name(), NoYes::Yes));
Всё работает
Какой запрос формируется у вас в этом случае? Точно ли он работает так, как вы предполагаете? Вообще, при формировании запросов лучше использовать методы из SysQuery, вроде queryValue() и SysQuery::valueEmptyString()
Цитата:
Сообщение от Dronas Посмотреть сообщение
при добавлении скобок
X++:
'((%1.SelectedDivergence==%2)&&(%1.SelectedSupeVisor==""))'
Уже не работает, выдаёт:
SELECT * FROM ERG_RPDocument WHERE SalesPickingListJournalTable.PickingListId = ERG_RPDocument.PickingListId AND ((((ERG_RPDocument_1.SelectedDivergence==Да)&&(ERG_RPDocument_1.SelectedSupeVisor==""))))
Ошибка расширенного диапазона запроса: Ожидается правая круглая скобка рядом с 0
Ну правильно, у вас сформированное значение range не распарсилось и ушло на SQL в исходном виде. SQL использует мнемонические обозначение логических операций вместо && || и одиночный знак равенства вместо двойного... На всякий случай, посмотрите внимательно раздел axaptapedia на эту тему. Кроме того, обратите внимание, что в автоматически сформированной части запроса у вас таблица называется ERG_RPDocument, а в сформированном Range - ERG_RPDocument_1, это как-то странно...
Цитата:
Сообщение от Dronas Посмотреть сообщение
Ах3 MSSQL2008 вроде
- тук-тук!
- кто там?
- да ведь это же я!
- кто "я"? "я" бывают разные!(с) м/ф про Винни-Пуха
Так вот, AX3 тоже бывают разные какая именно у вас версия ядра?
Старый 14.04.2008, 11:36   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
... и ушло на SQL в исходном виде...
ну на SQL то оно ещё не ушло, иначе насколько я понимаю, была бы другая ошибка совсем. Здесб проблема остаётся ещё на стороне Аксапты, вероятно как раз в момент парсинга этого "расширенного диапазона запроса"..
Ну мне так кажется...
__________________
Zhirenkov Vitaly
Старый 14.04.2008, 11:47   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
X++:
static void Job(Args _args)
{
    InventTable             inventTable;
    QueryRun                qr;
    Query                   query = new Query();
    QueryBuildDataSource    qbds;
    QueryBuildRange         qbr;
    str                     rangeValue;
    ;

    qbds = query.addDataSource(tablenum(InventTable));

    qbr  = qbds.addRange(fieldnum(InventTable, RecId));

    rangeValue = strFmt("((ItemId==\"%1\") && (PurchModel==%2))", "B-R12",  enum2int(NoYes::Yes));

    qbr.value(rangeValue);

    qr = new QueryRun(query);

    while (qr.next())
    {
        inventTable = qr.get(tablenum(InventTable));

        info(strFmt("%1 - %2", inventTable.ItemId, inventTable.PurchModel));
    }
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не получается сформировать lookup по запросу с outer join dawl DAX: Программирование 6 05.12.2008 15:12
Переход по полям грида с помощью стрелочек на клавиатуре SorNick DAX: Программирование 16 07.10.2008 12:39
Не могу сформировать строку strFmt CasperSKY DAX: Программирование 9 17.04.2008 10:52
Макрос в strfmt() blokva DAX: Программирование 2 24.08.2007 10:31
функция аналогичная strfmt ivas DAX: Программирование 10 27.12.2005 13:20

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

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

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