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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.05.2004, 09:52   #1  
Vpooh is offline
Vpooh
Участник
 
17 / 10 (1) +
Регистрация: 26.09.2003
Есть на форме два DataSource: InventTable и ShopInventItems, у второго стоит JoinSource=InventTable и тип связи InnerJoin. Также есть грид на основе InventTable и комбобокс с пунктами "Супермаркет","Универсам", "Дискаунтер", в котором фильтруются товары по принадлежности к категории магазина (фильтры по ShopInventItems). Мне надо добавить в этот комбобокс пункт "Все форматы",при выборе которого связь между InventTable и ShopInventItems надо разрывать.
Пробовал так:

ShopInventItems_ds.JoinSource(0);
ShopInventItems_ds.LinkType(1); //Delayed

но это срабатывает только в Init() ShopInventItems_ds Можно ли этими свойствами динамически манипулировать?
Старый 25.05.2004, 16:44   #2  
Vasilenko Aleksandr is offline
Vasilenko Aleksandr
Участник
 
8 / 10 (1) +
Регистрация: 21.05.2004
А почему бы Вам не попробовать не разрывать связь между InventTable и ShopInventItems, а очистить фильтр по ShopInventItems при выборе "Все форматы"?
Старый 25.05.2004, 18:31   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
на самом деле есть масса вопросов к формулировкам.
например как должна выглядеть разорванная связь...

попробуйте сформулировать на человеческом языке то, что вы хотите сделать, не употребляя программистских терминов.

скорее всего, ваша задача решается не так и не этими инструментами.
__________________
полезное на axForum, github, vk, coub.
Старый 26.05.2004, 08:50   #4  
Vpooh is offline
Vpooh
Участник
 
17 / 10 (1) +
Регистрация: 26.09.2003
Очистить фильтр по ShopInventItems не даёт результата, так как есть товары, не привязанные ни к одному формату (в ShopInventItems их просто нет, а видеть их надо).
На человеческом языке задача звучит так. Есть список товаров (InventTable), каждый товар привязан к категориям магазинов "Супермаркет","Универсам", "Дискаунтер" (ShopInventItems) или не привязан никуда (важный момент). Я хотел-бы предоставить пользователю возможность фильтровать список товаров по этим трём категориям (выбором из выпадающего списка), а также чтобы можно было выбрать пункт "Все форматы"(там будут видны также товары, не привязанные ни к одной категории магазинов).

То есть при выборе одной из трёх категорий магазинов результирующий набор должен быть - InventTable inner join ShopInventItems с фильтром, наложенным на ShopInventItems по данной категории.
При выборе пункта "Все форматы" результат - это просто InventTable.

Проблема в том, что не удаётся на лету манипулировать свойством LinkType источника данных.
В дизайне источник ShopInventItems связан с InventTable по InnerJoin. Я пытался разрывать связь между ними с помощью ShopInventItems_ds.linkType(1);
ShopInventItems_ds.joinSource(0); но это не действует.
Пробовал также определить в дизайне связь между ShopInventItems и InventTable как Delayed и в коде менять query у InventTable_ds. Так всё работает, как хотелось, но только если в форме нет других источников данных, связанных с InventTable по InnerJoin.(а они есть) В этом случае выдаёт ошибку на InventTable_ds.executeQuery(), причём ругается по разу на каждый источник данных, связанный с InventTable по InnerJoin: "Неправильный тип аргумента функции"
Старый 26.05.2004, 09:09   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
На человеческом языке задача звучит так. Есть список товаров (InventTable), каждый товар привязан к категориям...
это понятно.

Цитата:
... должен быть - InventTable inner join
а вот это непонятно. При чем здесь join?

В таблице InventTable у вас есть поле - код из ShopInventItems. По нему и фильтруйте. Зачем вам вытаскивать другую таблицу то?

Похоже у вас проблема пустого критерия.
Смотрите здесь Как программно выбрать пустые строки в запросе
указать пусую строку в критерии можно при помощи SysQuery::valueEmptyString()

о кодировке в Аксапте вообще Коды клиентов и поставщиков
__________________
полезное на axForum, github, vk, coub.
Старый 26.05.2004, 14:16   #6  
Vpooh is offline
Vpooh
Участник
 
17 / 10 (1) +
Регистрация: 26.09.2003
Цитата:
В таблице InventTable у вас есть поле - код из ShopInventItems. По нему и фильтруйте. Зачем вам вытаскивать другую таблицу то?
Не понял. InventTable и ShopInventItems связаны только по ItemId.
Старый 26.05.2004, 14:21   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
как это?

вот ваше описание на человеческом языке: "Есть список товаров (InventTable), каждый товар привязан к категориям магазинов "Супермаркет","Универсам", "Дискаунтер" (ShopInventItems) или не привязан никуда (важный момент)."

Я так понимаю, что в таблице ShopInventItems у вас хранятся категории Супермаркет, Универсам, Дискаунтер. А в таблице inventTable заведено поле, в котором вы выбираете одну из категорий или оставляете это поле пустым. (Полный аналог групп инвентриазации, групп расчета комиссоннных, налоговых групп, групп накладнх расходов). Так?
__________________
полезное на axForum, github, vk, coub.
Старый 26.05.2004, 14:44   #8  
Vpooh is offline
Vpooh
Участник
 
17 / 10 (1) +
Регистрация: 26.09.2003
Нет, в InventTable нет такого поля. Товар может быть привязан к одной, двум или трём категориям магазинов (а может и не быть привязан ни к одной). Вобщем, связь один ко многим по полю ItemId.
Старый 26.05.2004, 15:07   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
не понимаю.
можете наприсовать схемку? в ERwin'например или в Visio?
или проект с этими таблицами и типами сюда положить?

Что значит слово "привязан"? Как это практически делается?
Вы для каждой номенклатуры заводите несколько записей в ShopInventItems с данным InventID.

Это похоже на настройку местонахождения или покрытия номенклатуры?

Если да, то вернемся к исходному вопросу. Зачем вам "надо разрывать связь между InventTable и ShopInventItems"? Вы ведь всего лишь хотите увидеть все записи.

Ну и смотрите "все" со включенной связью. Или я чего снова не понял?
__________________
полезное на axForum, github, vk, coub.
Старый 26.05.2004, 16:07   #10  
Vpooh is offline
Vpooh
Участник
 
17 / 10 (1) +
Регистрация: 26.09.2003
Да, под привязкой понимается именно это: для каждой номенклатуры заводится несколько записей в ShopInventItems с данным ItemId. Но может быть и номенклатура, для которой в ShopInventItems ничего не заводится.

Высылаю проект с тестовой формой. Там связь таблиц InventTable и ShopInventItems стоит Delayed. Если поставить InnerJoin, то записи в гриде будут плодиться по кол-ву записей в ShopInventItems для данного ItemId. Поэтому я и хочу разрывать связь двух датасоурсов.

В таком виде форма работает, как задумано. Но стоит только добавить источник данных, связанный с InventTable по InnerJoin (или по любому типу Join), то при смене формата (метод ChangeFormat) возникает ошибка на InventTable_ds.executeQuery().
В реальной форме InventTable таких источников, связанных с InventTable по Join много, и фокус не проходит
Вложения
Тип файла: zip TestDataSources.zip (32.5 Кб, 38 просмотров)
Старый 26.05.2004, 16:36   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
у вас сильно переделанный inventTable.

можно я попрошу вас самостоятельно вычистить код так, чтобы ваш проект можно было бы загрузить в стандартное приложение?

сильно подозреваю, что вы просто где-то запутались с программированием. так например, в init'e датасорса вы зачем-то инициализируете дерево.

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

кроме того, вы уверены, что цены нужно указывать в своих таблицах, а не в прайс-листах аксапты?
__________________
полезное на axForum, github, vk, coub.
Старый 26.05.2004, 16:40   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
и потом. может я все же чего-то не понял.

но мне показалось, что ваш случай сильно напомниает мастонахождения номенклатуры, покрытие номенклатуры, описания на разных языках для номенклатуры, внешние коды номенклатуры.

чем вас не устраивает этот функционал? каких именно отличий от стандартного поведения вы хотели достичь?
__________________
полезное на axForum, github, vk, coub.
Старый 27.05.2004, 08:40   #13  
Vpooh is offline
Vpooh
Участник
 
17 / 10 (1) +
Регистрация: 26.09.2003
То, что сильно переделано и инициализация дерева - это наследство ("Не виноватая я - он сам пришёл") :P
А где можно посмотреть про местонахождения номенклатуры, покрытие номенклатуры, описания на разных языках для номенклатуры, внешние коды номенклатуры ? Я с этим функционалом не знаком, может, действительно, всё проще.
Старый 27.05.2004, 09:04   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
справочник номенклатура.
кнопка настройка.
все там.
__________________
полезное на axForum, github, vk, coub.
 


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

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

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