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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.07.2005, 21:17   #1  
Alex P is offline
Alex P
Участник
 
40 / 10 (1) +
Регистрация: 01.10.2004
Проблема с OuterJoin и addRange
Такая проблема, есть две таблицы Master и Detail связанный в дизайне по OuterJoin, которые показывются в одном гриде. Все прекрасно работает. Но стоит попытаться наложить фильтр на Detail (по какому то полю,не входящую в link), то выдается ошибка "недопустимый диапазон" и фильтр не создается. Не подскажите, можно ли побороть сие безобразие. Заранее благодарен.
Старый 05.07.2005, 10:16   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А итерактивно фильтр по нужному полю устанавливается? Если без проблем, то кусочек кода покажи.
Старый 05.07.2005, 14:47   #3  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Кстати, наложение фильтра на связанный по outer-join дочерний datasource дает уменьшение выборки этого самого datasource, и не более того. Т.е. общее число записей не уменьшается. Спрашивается - нафига козе баян?
__________________
Андрей.
Старый 05.07.2005, 16:58   #4  
Alex P is offline
Alex P
Участник
 
40 / 10 (1) +
Регистрация: 01.10.2004
Цитата:
Изначально опубликовано Dron AKA andy
Кстати, наложение фильтра на связанный по outer-join дочерний datasource дает уменьшение выборки этого самого datasource, и не более того. Т.е. общее число записей не уменьшается. Спрашивается - нафига козе баян?
Спасибо всем, кто ответил. Проблема разрешилась по методу - "А если немного подумать-?". Простая ошибка. Если Data Source привязан по join к master - таблице, то у него номер в query не 1, а 2. ( this.query().dataSourceNo(2).addRange( ....) )
По поводу баяна - простая задача типа : Есть услуги, есть районы , есть тарифы на услуги, которые зависят от районов. Делается grid в котором услуги и тарифы в одной строке (для ввода тарифов), есть еще один grid по районам, перемещение по районам отбирает тариф для данной услуги только для этого района.
Старый 05.07.2005, 17:18   #5  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
А edit-методом не проще решить задачу? И без outer join можно обойтись...
__________________
Андрей.
Старый 05.07.2005, 17:29   #6  
Alex P is offline
Alex P
Участник
 
40 / 10 (1) +
Регистрация: 01.10.2004
Цитата:
Изначально опубликовано Dron AKA andy
А edit-методом не проще решить задачу? И без outer join можно обойтись...
Ну, учитывая, что полей для тарифа несколько ... тариф, дата начала, статус+ заказчик еще потом что-нибудь пожелает, то вряд ли проще. Возможно быстрее будут отрабатываться запросы, но поскольку записей не так уж много, то не критично.
Старый 28.02.2014, 11:24   #7  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Angry А другой вариант addRange и outer join
Цитата:
Сообщение от Alex P Посмотреть сообщение
Спасибо всем, кто ответил. Проблема разрешилась по методу - "А если немного подумать-?". Простая ошибка. Если Data Source привязан по join к master - таблице, то у него номер в query не 1, а 2. ( this.query().dataSourceNo(2).addRange( ....) )
По поводу баяна - простая задача типа : Есть услуги, есть районы , есть тарифы на услуги, которые зависят от районов. Делается grid в котором услуги и тарифы в одной строке (для ввода тарифов), есть еще один grid по районам, перемещение по районам отбирает тариф для данной услуги только для этого района.
Не срабатывает в другой ситуации:
есть запрос на форме типа
X++:
select * from SalesLine outer join Name from EcoResCategory where...
Запрос стандартный, отрабатывает правильно.
Нужно наложить фильтр на EcoResCategory.Name
Делаю так:
X++:
    crCategoryFilter = salesLine_ds.query().dataSourceTable(tableNum(EcoResCategory)).addRange(fieldNum(EcoResCategory, Name));
...
X++:
void crSetRange(){
    crCategoryFilter.value(UseCategory.checked()?CategoryFilter.valueStr():"");
    SalesLine_ds.executeQuery();
    }
В результате этого просто значения EcoResCategory , не подпадающие под фильтр, показываются, как не выбранные.
Если просто накладывать фильтр на поле прямо на форме - работает.
Как побороть?

Последний раз редактировалось gefr; 28.02.2014 в 11:26. Причина: уточнение
Старый 28.02.2014, 12:06   #8  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Сам разобрался: надо было использовать другой фильтр.

Неправильно для outer join:
crCategoryFilter = salesLine_ds.query().dataSourceTable(tableNum(EcoResCategory)).addRange(fieldNum(EcoResCategory, Name));

Правильно для outer join:
crCategoryFilter = salesLine_ds.query().addQueryFilter( salesLine_ds.query().dataSourceTable(tableNum(EcoResCategory)),"Name");
Теги
addqueryfilter, addrange, outer join

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с Lookup gefr DAX: Программирование 2 05.07.2007 14:45
Расширенный AddRange и OuterJoin Russland DAX: Программирование 0 04.07.2006 16:36
Опять про OuterJoin нескольких таблиц murad DAX: Программирование 1 15.05.2006 10:26
Как добавить в addRange условие по "или" на контейнерные поля? Lora DAX: Программирование 9 29.11.2004 13:52
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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