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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2010, 11:12   #1  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Ошибка в QueryBuildRange
Создаю запрос
X++:
qbrOrigDataID.value(strfmt("((%1.%2=='%3')||(%1.%4=='%5'))"...
выдает ошибку: Ошибка расширенного диапазона запроса: Ожидается правая круглая скобка рядом с 35.
Уже все перепробовал... ведь это стандартный запрос..
Старый 27.04.2010, 11:22   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
A если поменять местами двойные и одинарные кавычки?

P.S.: http://www.axaptapedia.com/index.php...n_query_ranges
Старый 27.04.2010, 11:23   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Кавычки поменяйте местами. Двойные - внутрь выражения, а апострофы - снаружи.

P.S. Хоть и опоздал - стирать не буду. Я ведь горбатился... писал...
Старый 30.04.2010, 13:45   #4  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Понял.. проблема очень странная. Пользователь говорит, что не работает. Проверяю: у меня - работет, у пользователя - нет. Стираю кэш пользователя (два файлика, DAX2009) пользователь перезаходит, все работает... просто кошмар какой-то, что делать??
Старый 30.04.2010, 14:46   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Andrux Посмотреть сообщение
Стираю кэш .. все работает .. что делать??
Стирать кэш
Старый 01.05.2010, 10:09   #6  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
Мы на одном проекте в АД вставили скрипт при логоне удалялся кеш. Много проблем разом ушло )
За это сообщение автора поблагодарили: kpoxa (1).
Старый 01.05.2010, 10:23   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
блин.
Цитата:
Сообщение от Andrux Посмотреть сообщение
Стираю кэш пользователя (два файлика, DAX2009) пользователь перезаходит, все работает... просто кошмар какой-то, что делать??
что делать? программировать правильно!

еще раз (и очень внимательно) прочитайте про паттерн pack/unpack
особенное внимание уделите локальному макросу currentVersion.

Суть: когда меняете в коде список хранимых переменных, нужно изменять номер версии. Желательно также в unpack добавлять код для восстановления из предыдущих версий (чтобы пользовательские настройки не пропадали)
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: DSPIC (-7).
Старый 06.09.2010, 16:53   #8  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Возвращаюсь к старому вопросу, ничего не помогает.. ошибка так и не исчезает.. Уже и запрос переписал
X++:
queryExpression = '((' +
                                    tableid2name(tablenum(Table)) + '.' + fieldid2Name(tablenum(Table), fieldId2Ext(fieldnum(Table, Dimension),1)) +
                                    ' == ' + strfmt('"%1"',queryValue(_Dimension[1])) +
                                    ') || (' +
                                    tableid2name(tablenum(Table)) + '.' + fieldid2Name(tablenum(Table), fieldId2Ext(fieldnum(Table, DimensionShip),1)) +
                                    ' == ' + strfmt('"%1"',queryValue(_Dimension[1])) +
                               '))';
 
            qbrRecId.value(queryExpression);

Последний раз редактировалось Andrux; 06.09.2010 в 16:55.
Старый 06.09.2010, 17:09   #9  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Andrux Посмотреть сообщение
ничего не помогает.. ошибка так и не исчезает..
И не должно получаться. Синтаксис расширенных диапазонов не работает для массивовых полей, коим является поле Dimension. К сожалению.

P.S. http://www.axaptapedia.com/Expressions_in_query_ranges , в самом низу - раздел Limitations

Последний раз редактировалось Gustav; 06.09.2010 в 17:17.
За это сообщение автора поблагодарили: Andrux (1).
Старый 06.09.2010, 17:24   #10  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
так в том-то и дело, что работает.. Только вот у разных пользователей по-разному))) у кого-то выдает ошибку, у кого-то все нормально. Я первый раз такое вижу
Старый 06.09.2010, 17:33   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Не ограничивается ли "это работает" только частным случаем первого элемента Dimension?
Старый 06.09.2010, 17:44   #12  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Тестировал на одних и тех же данных и при тех же значениях фильтра. Сейчас переписал запрос без использования массивов для примера.... и ошибка исчезла.. Все-таки какая-то загадка
Но если бы расширенные диапазоны не работали для массивов, то на форме невозможно было бы отфильтровать данные по значениям нескольких аналитик.

Последний раз редактировалось Andrux; 06.09.2010 в 17:48.
Старый 06.09.2010, 23:52   #13  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Andrux Посмотреть сообщение
если бы расширенные диапазоны не работали для массивов, то на форме невозможно было бы отфильтровать данные по значениям нескольких аналитик.
На форме вы обычно используете "простые" range'и, а тут - расширенный... Хотя можно и его на форме использовать: попробуйте на форме в критерии фильтрации написать что-нить вроде
Код:
((Dimension[2]=="ABC"))
и посмотрите, получится ли что-нить отфильтровать.
Старый 07.09.2010, 10:03   #14  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от gl00mie Посмотреть сообщение
На форме вы обычно используете "простые" range'и, а тут - расширенный
Именно шта! И правильно отработает лишь частный случай:
Код:
(Dimension=="ABC") 
или 
(Dimension="ABC")
, что по смыслу эквивалентно Dimension[1]="ABC".

Никакие же [2] и выше не работают. Так же, как не работают SQL-названия полей: Dimension2_, Dimension3_ и т.д.

Последний раз редактировалось Gustav; 07.09.2010 в 10:05.
Старый 07.09.2010, 11:09   #15  
titov is offline
titov
Участник
 
73 / 87 (3) ++++
Регистрация: 23.12.2005
Адрес: Казань
__DimensionRange.xpo

ax2009 rollup4 - все работает - ссылка на проект выше

если у некоторых клиентов не работает, то напрашивается, что версия клиента отличается, скорее всего ниже, чем у тех, у кого работает.

для 4.0 совет поставить обновление не ниже KB978429
За это сообщение автора поблагодарили: lev (3), gl00mie (3), Gustav (3), IvanS (1), S.Kuskov (3).
Старый 07.09.2010, 11:41   #16  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от titov Посмотреть сообщение
ax2009 rollup4 - все работает

для 4.0 совет поставить обновление не ниже KB978429
Ну, раз так, то нашёлся бы добрый человек - обновил бы топик на Аксаптопедии...

titov, а Вы, может, напишите здесь в явном виде, чтобы в проект не нырять, какой синтаксис надо использовать: Dimension[2] или Dimension2_ ? Спасибо.
Старый 07.09.2010, 12:07   #17  
titov is offline
titov
Участник
 
73 / 87 (3) ++++
Регистрация: 23.12.2005
Адрес: Казань
Цитата:
Сообщение от Gustav Посмотреть сообщение
какой синтаксис надо использовать: Dimension[2] или Dimension2_ ?
X++:
FieldName = new SysDictTable(tableNum(TableName)).fieldName(fieldId2ext(fieldNum(TableName,dimension),1(2,3)),DbBackend::Native);
FieldName = fieldId2name(tableNum(TableName),fieldId2ext(fieldNum(TableName,dimension),1(2,3)));
оба варианта возвращают Dimension[1] (Dimension[2],Dimension[3])

и обращаю внимание на QueryBuildRange (RECID)
X++:
sysQuery::findOrCreateRange(TableName_ds.query().dataSourceNo(1),fieldNum(TableName,[B]RECID[/B]));
ps почему то так
X++:
new SysDictTable(tableNum(TableName)).fieldName(fieldNum(TableName,dimension),DbBackend::Native,2);
не работает!!!

Последний раз редактировалось titov; 07.09.2010 в 12:15.
Старый 07.09.2010, 13:21   #18  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Да, действительно, не подумал))) На формахвсегда запрос типа "И"..
Переписал запрос без массивов. Все заработало. Действительно
Цитата:
Синтаксис расширенных диапазонов не работает для массивовых полей, коим является поле Dimension. К сожалению.
Спасибо огромное за помощь!
Старый 07.09.2010, 14:38   #19  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Оказывается, чтобы работала фильтрация по полям-массивам (на тех версиях ядра, где это вообще работает), нужно всегда указывать название datasource'а, т.е. не просто
Код:
(Dimension[3]=="ABC")
а, к примеру,
Код:
(CustTrans.Dimension[3]=="ABC")
иначе вылетает ошибка.
PS. Обновил статью на axaptapedia.
За это сообщение автора поблагодарили: belugin (5), Logger (5), lev (3), titov (1), IvanS (1), kpoxa (1).
Старый 07.09.2010, 19:06   #20  
titov is offline
titov
Участник
 
73 / 87 (3) ++++
Регистрация: 23.12.2005
Адрес: Казань
Цитата:
Сообщение от gl00mie Посмотреть сообщение
PS. Обновил статью на axaptapedia.
Цитата:
Сообщение от titov Посмотреть сообщение
ax2009 rollup4 - все работает
для 4.0 совет поставить обновление не ниже KB978429
Протестировал "совет" для 4.0 - не работает!!!

ах2009 - все нормально!

gl00mie, просьба обновить статью.
За это сообщение автора поблагодарили: alex55 (1).
Теги
query, querybuildrange, range, ядро, dimensions

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка чтения файлов XLS под Windows 7 Zabr DAX: Программирование 14 05.09.2011 12:52
Ошибка в логе при установке клиента AX 2009 sao DAX: Администрирование 9 04.02.2010 11:56
Не запускается Axapta. Общая ошибка сети. Lucky13 DAX: Администрирование 3 25.09.2007 13:02
Ошибка в формате числа. 36AC DAX: Программирование 7 19.10.2006 10:04
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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