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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.11.2004, 17:35   #1  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
уже всю голову сломал...
Всех приветствую!

Я создаю форму, в которую впихиваются строки накладной (Таблица CustInvoiceTrans). В каждой строке есть ссылка на номенклатуру (т.е. на InventTable), которая в свою очередь ссылается на InventItemRange. В последней таблице есть 2 поля: RangeId и RangeIdParent - родитель. Мне надо раскрутить цепочку для отдельно взятой строки из CustInvoiceTrans.
К примеру в строке у меня указана номенклатура Н. Переходим к таблице InventItemRange и узнаем по полю RangeId, что это Сыры. Однако поле RangeIdParent говорит о том, что есть уровень повыше. Берем значение этого поля и ищем его опять в поле RangeId. Находим "Молоко. Гасртоном", но и это не последний уровень. Последний будет когда в поле RangeIdParent ничего не окажется, значит, все.

Возвращаясь к моей форме: будет 6 полей, в которые нужно записать вот эти уровни. И как это сделать, я пока не придумал. Цепочку эту можно раскрутить в отдельном методе, можно запихнуть результаты в переменные и дергать их дисплейными методами, но куда этот метод раскрутки вставить? Чтобы он не один раз сработал (как в Init), а для каждой строки. И не долго ли так будет?
Прошу высказывать соображения, если я понятно изложил задачу.
Старый 12.11.2004, 12:01   #2  
lugachy is offline
lugachy
Участник
 
82 / 11 (1) +
Регистрация: 15.03.2004
Вставить рекурсию лучше в метод таблицы InventTable, а возвращать он должен контейнер со значениями. В форме - дисплейные методы, забирающие из контейнера каждый свое значение, а заодно проверяющие для какого ItemID в контейнере лежат значения.

Цитата:
Чтобы он не один раз сработал (как в Init), а для каждой строки. И не долго ли так будет?
Дисплейный метод вызывается для конкретной строки (если у контрола указать соответствующий DS).
Скорость можно повысить разместив эти поля для каждого ItemID в талице InventTable.
Старый 12.11.2004, 15:14   #3  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Если известно что количество уровней не превышает некое число N, то можно сделать это с минимальными накладными расходами и без использования вычислимых полей, если набросать на форму N дополнительных DataSource-ов соединённых по outer join.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Курсор перешел к следующей записи на клиенте, на сервере этого сделать уже нельзя PavelSR DAX: Программирование 22 01.11.2012 07:33
HELP! У кого уже стоит SP5! Янка DAX: Программирование 3 03.07.2006 08:20
"Объект с таким именем уже существует" chi DAX: Программирование 4 08.09.2005 13:06
Инвентаризация ОС или "я уже ничего не понимаю" ksenia DAX: Функционал 1 22.12.2004 10:14
Уже существует проводка за более позднюю дату rus_stas DAX: Функционал 2 09.11.2004 20:17

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

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

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