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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.06.2013, 17:53   #1  
Helm is offline
Helm
Участник
 
15 / 11 (1) +
Регистрация: 24.09.2009
Динамическое изменений JOIN в форме
Доброго времени суток.
Вопрос, пожалуй, скорее не по джойну, а по тупняку моему с Query и формами

Axapta 3, Form InventTable
Имеется справочник совместимости, связь идёт по ItemId, список совместимых кодов выводится на отдельной вкладке. Вобщем к InventTable приджойнена новая таблица (ItemsCompat) Delayed-Join, и стандартно приджойнены InnerJoin три раза InventTableModule и 1 раз InventItemLocation.

Хочется сделать возможности динамически (по галочке) отображать только те товары, для которых имеется совместимость.
Если добавить ещё раз в DataSource таблицу совместимостей, но с Exist-Join, то получается как раз список нужных товаров, но после изменения в коде:
X++:
CompatItems_ds.linkType(FormLinkType::...)
вылетает ошибка на super() в ExecuteQuery

При попытке работы с Query (в поиске нашлись примеры) напрямую тоже не удалось, судя по всему из-за того, что джойн на таблицу совместимостей уже имеется в самих датасорсах.
За это сообщение автора поблагодарили: NataLee (1).
Старый 22.06.2013, 21:26   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Не надо менять LinkType - это не работает. Если нужен отключаемый фильтр по дополнительному datasource'у, управляйте "включенностью" соотв. datasource'а в запросе с помощью свойства enabled:
X++:
QueryBuildDataSource qbds;
;
// ...
qbds = InventTable_QR.query().dataSource(tablenum(ItemsCompat));
qbds.enabled(FilterCheckBox.value());
InventTable_DS.research();
За это сообщение автора поблагодарили: NataLee (1), Logger (1), Helm (1), Vlad_ (1).
Старый 23.06.2013, 16:09   #3  
sparco is offline
sparco
Участник
Самостоятельные клиенты AX
 
44 / 21 (1) +++
Регистрация: 10.10.2011
Адрес: Москва
Как вариант для решения можно попытаться пойти по следующему пути:
Убрать из формы ItemsCompat.
При открытии формы сохранить Query на InventTable который будет стандартным.
При нажатии на checkbox вызвать например класс, в который отправится первоначальный Query.
В классе сделаете к dataSource InventTable - adddatasource ItemsCompat и join тот который надо.
Измененный Query вернуть в форму, потом InventTable_ds.query( Query ) и ExecuteQuery. Должно сработать.
Что бы вернуть обратно, просто сделать InventTable_ds.query( Query ), где Query тот сохраненный при открытии.

Однако может появится проблема, если возникнет необходимость отображать поля из таблицы ItemsCompat. Ее можно решить с помощью display методов. а это влечет за собой свои проблемы.
За это сообщение автора поблагодарили: NataLee (1).
Старый 23.06.2013, 20:58   #4  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от sparco Посмотреть сообщение
Как вариант для решения можно попытаться пойти по следующему пути:....
вариант плох хотя бы тем, что сбрасывает пользовательские фильтры и сортировки
gl00mie посоветовал абсолютно работоспособный и проверенный годами вариант без побочных эффектов - добавить еще один DS по ItemsCompat (можно сразу в дизайн, можно программно) по exists join и управлять его включением
За это сообщение автора поблагодарили: NataLee (1).
Старый 23.06.2013, 21:43   #5  
Helm is offline
Helm
Участник
 
15 / 11 (1) +
Регистрация: 24.09.2009
Thumbs up
Да, всё помогло. Спасибо большое, gl00mie!
Не знал про Enabled, позорище(
Старый 24.06.2013, 10:46   #6  
sparco is offline
sparco
Участник
Самостоятельные клиенты AX
 
44 / 21 (1) +++
Регистрация: 10.10.2011
Адрес: Москва
Цитата:
вариант плох хотя бы тем, что сбрасывает пользовательские фильтры и сортировки
Да, вы правы, спасибо.
Старый 14.04.2020, 11:15   #7  
DYman is offline
DYman
Участник
 
20 / 10 (1) +
Регистрация: 15.08.2002
Адрес: Санкт-Петербург
Привет Вам, gl00mie, и спасибо из 2020
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Not exists join в форме запроса pedrozzz DAX: Программирование 3 08.06.2011 15:24
Динамическое создание DataSource на форме, и добавление элементов дизайна. epack DAX: Программирование 12 24.11.2010 15:31
Как join'ить временную таблицу и query на форме IvanS DAX: Программирование 1 07.05.2008 09:49
Динамическое изменение Query() на форме makos DAX: Программирование 22 05.07.2006 16:28
JOIN программно на форме не работает rohlenko DAX: Программирование 2 31.03.2005 15:41
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:45.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.