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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.04.2012, 14:10   #1  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от klimova_m Посмотреть сообщение
Проверено: если Range становится очень много (в моем случае их 833 набралось), то Ax ругается так "Трассировка стека: При выполнении операции привязки не удалось распределить пространство буфера."
Range ограничен 250 символами. Возможно, имеет смысл попробовать накладывать ограничения как-то по-другому. Довольно странно выглядит запрос к таблице, в котором в условии WHERE безумное количество ограничений.

длина Range
Старый 24.04.2012, 14:33   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от kornix Посмотреть сообщение
Range ограничен 250 символами.
Нет у range в X++ ограничения в 250 символов. Ограничение в 250 символов есть только у EDT Range, который стандартно используется на формах для указания критериев запросов. Но и его длину можно увеличить.

А вот больше скольких-то сотен условий по ИЛИ добавить не получится, есть ограничение на уровень вложенности WHERE.

Аксапта для ИЛИ построит что-то типа такого и в некоторый момент загнется:
X++:
((((((((((((((((((((((((((((((((((((((((((((((((ITEMID=?) OR (ITEMID=?)) OR (ITEMID=?)) OR (ITEMID=?)) OR (ITEMID=?))...

Последний раз редактировалось oip; 24.04.2012 в 15:07. Причина: добавил про вложенность
За это сообщение автора поблагодарили: klimova_m (1), kornix (1).
Старый 24.04.2012, 14:59   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от oip Посмотреть сообщение
Нет у range в X++ ограничения в 250 символов. Ограничение в 250 символов есть только у EDT Range, который стандартно используется на формах для указания критериев запросов. Но и его длину можно увеличить.

А вот больше скольких-то сотен условий по ИЛИ добавить не получится, есть ограничение на уровень вложенности WHERE.
Я бы еще добавил, что при большом количестве условий по OR в where, увеличивается вероятность того, что сиквельный оптимизатор переглючит и он уйдет в full scan (Точнее конечно же - в поиск по индексу, но только по условию dataareaId==key).
Я, поэтому, всегда пользуюсь техникой, которую участник db описал. Хотя я ее предпочитаю даже не столько с точки зрения производительности, сколько с точки зрения наглядности...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
JOIN подчиненной таблицы в отчете Ислан DAX: Программирование 14 24.10.2011 17:42
Display метод временной таблицы выполняется в компании DAT S.Kuskov DAX: Программирование 4 15.04.2011 20:11
Можно ли вообще сделать JOIN временной таблицы и InventDim??? Maxim Gorbunov DAX: Программирование 9 05.03.2005 10:39
SQL-запрос с участием временной таблицы Atani DAX: Программирование 1 07.10.2003 19:55
Временные таблицы в запросе Dron AKA andy DAX: Программирование 4 06.09.2002 12:14

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

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

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