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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.03.2006, 09:43   #1  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от George Nordic
Сделать временную таблицу, заполнить её списком и заджойнить.
С временной таблицей - спорный вариант, с подводными камнями.
Через query - лучше!

Хотя в случае query есть ограничение на длину строки, подставляемой в range.
Но это можно обойти при помощи нескольких range на одно и то же поле. В этом случае они будут объединяться по ИЛИ.

Можно ещё конечно извратиться с макросом для обычного select (см. макрос InventDimJoin). В макрос передается динамически сгенерированное условие where на основе списка значений nameEmplList. Но макросы как-то обычно не рекомендуется использовать.
Старый 16.03.2006, 10:17   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от dn
С временной таблицей - спорный вариант, с подводными камнями.
Например?
Старый 16.03.2006, 13:56   #3  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от Gustav
Например?
Подводные камни с временными таблицами не раз обсуждались:
join постоянной и временной таблиц
утечка RecId
производительность ...
Старый 16.03.2006, 14:10   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от dn
Подводные камни с временными таблицами не раз обсуждались:
join постоянной и временной таблиц
утечка RecId
производительность ...
Спасибо.
Старый 16.03.2006, 10:26   #5  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Сообщение от dn
Можно ещё конечно извратиться с макросом для обычного select (см. макрос InventDimJoin). В макрос передается динамически сгенерированное условие where на основе списка значений nameEmplList. Но макросы как-то обычно не рекомендуется использовать.
Ну вот, опять!
Проверка на передачу пустого параметра в макрос

Ну не передаются в макрос динамически (т.е. программно) сгенерированные вещи! Макросы используются только на этапе компиляции.
__________________
Андрей.
Старый 16.03.2006, 13:54   #6  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от Dron AKA andy
Ну не передаются в макрос динамически (т.е. программно) сгенерированные вещи! Макросы используются только на этапе компиляции.
Действительно погорячился, давно уже макросами не баловался :-)

Тогда ещё остается только runbuf
Старый 16.03.2006, 11:20   #7  
Hezl is offline
Hezl
Участник
Аватар для Hezl
 
138 / 16 (1) ++
Регистрация: 21.04.2004
Адрес: Moscow, Russia
Цитата:
Сообщение от dn
С временной таблицей - спорный вариант, с подводными камнями.
Через query - лучше!

Хотя в случае query есть ограничение на длину строки, подставляемой в range.
Но это можно обойти при помощи нескольких range на одно и то же поле. В этом случае они будут объединяться по ИЛИ.
Через query лучше, если условий немного. А если будет порядка 2000 ограничений, то queryRun.next() будет падать, причем громко. Так что решение от задачи зависит.
Старый 16.03.2006, 11:22   #8  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от dn
Хотя в случае query есть ограничение на длину строки, подставляемой в range.
Коллеги, а, кстати, какое? 250 символов? (255?) Или по каким-то другим параметрам ограничено, например, количеством... "элементов" (условий) в этой строке? Что-то нигде в явном виде не нашёл такой цифры, хотя действительно строка далеко не безгранична и крутится вокруг 250...
Старый 16.03.2006, 11:23   #9  
Hezl is offline
Hezl
Участник
Аватар для Hezl
 
138 / 16 (1) ++
Регистрация: 21.04.2004
Адрес: Moscow, Russia
Зависит от размера EDT Range.
За это сообщение автора поблагодарили: Gustav (1).
Старый 16.03.2006, 11:39   #10  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Hezl
Зависит от размера EDT Range.
Ух ты, здорово! Спасибо! Действительно стоит StringSize = 250. Попробовал ввести размер StringSize = 10 000 - AOT ругнулся сообщением "Значение вне диапазона. Приемлемые значения в диапазоне 1 & 1000"... Может быть, где-то можно и верхнюю границу диапазона подкрутить?

P.S. Кстати, влияет ли размер этого EDT Range еще на что-нибудь? Критично ли? Почему по дефолту стоит 250, а не сразу максимально 1000?

Последний раз редактировалось Gustav; 16.03.2006 в 11:49.
Теги
query, временная таблица, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Подскажите класс для подсчета сальдо Just_smile DAX: Программирование 7 01.04.2009 10:20
Подскажите с чего начать moid DAX: Программирование 12 09.02.2007 10:20
Проблема с запросом Protey DAX: Программирование 7 10.07.2006 09:32
Подскажите как реализовать такой запрос в Axapte velk DAX: Программирование 12 04.04.2006 21:55
Помогите с запросом.. DarkBear DAX: Программирование 2 15.08.2005 13:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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