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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.08.2009, 17:18   #1  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Фильтр в Grid
Всем привет!
Столкнулся с такой ситуацией.
Есть форма на ней грид состоящий из двух таблиц скажем(InventJournalTrans и связанная с ней InnerJoin InventDim) и поле combobox типа InventLocationId.
Необходимо при выборе в поле значения склада фильтровались записиси в Gride.

С одной таблицей все получается, но если 2 и связанные, то не выходит.
Старый 31.08.2009, 18:10   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
sql на сервер правильный уходит?
Старый 31.08.2009, 18:33   #3  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Делала по подобию Журнала LedgerJournalTable, только с двумя связаными таблицами.
Сейчас работает только таким образом выбираю значение ничего не происходит в Gride, выбираю второе значение в Gride фильтруется по предыдущему значению.

Метод modified на поле combobox
X++:
...
ret = super();

inventLocationId = combInventLocationId.text();
InventJournalTrans_ds.executeQuery();
InventDim_ds.executeQuery();
...
Старый 01.09.2009, 07:31   #4  
Freeangel is offline
Freeangel
Участник
 
173 / 55 (2) ++++
Регистрация: 01.04.2005
Попробуйте сначала перечитать подчиненный запрос
За это сообщение автора поблагодарили: KpecT (1).
Старый 01.09.2009, 08:32   #5  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Мне как раз эта мысль пришла в голову, когда я ехал на работу :-) Вчера тупил.
Старый 01.09.2009, 11:25   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от KpecT Посмотреть сообщение
Делала ...
Цитата:
Сообщение от KpecT Посмотреть сообщение
... когда я ехал на работу :-) Вчера тупил.
Сколько ж вас там?

Лучше покажите, как вы именно фильтр применяете на основании inventLocationId.
И в каком методе
Старый 01.09.2009, 16:48   #7  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
На форме:
1. Объявляем глобальную переменную в методе ClassDeclaration()
2. В dataSource в методе init() инициализируем поле, по которому собираемся фильтровать.
В executeQuery() присваиваем значение глобальной переменной (см. шаг 1)
3. Перекрываем метод modified() у поля InventLocationId, там присваиваем новое значение глобальной переменной и вызываем у dataSource’ов метод executeQuery().

Последний раз редактировалось KpecT; 01.09.2009 в 16:54.
Старый 01.09.2009, 20:44   #8  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от KpecT Посмотреть сообщение
Есть форма на ней грид состоящий из двух таблиц скажем(InventJournalTrans и связанная с ней InnerJoin InventDim) и поле combobox типа InventLocationId.
ComboBox - для енумов. Это у вас лукап. И похоже, что вы путаете чистый контрол и контрол, отображающий конкретное поле. У вас просто на контроле забит EDT.
Цитата:
Сообщение от KpecT Посмотреть сообщение
На форме:
1. Объявляем глобальную переменную в методе ClassDeclaration()
2. В dataSource в методе init() инициализируем поле, по которому собираемся фильтровать.
В executeQuery() присваиваем значение глобальной переменной (см. шаг 1)
3. Перекрываем метод modified() у поля InventLocationId, там присваиваем новое значение глобальной переменной и вызываем у dataSource’ов метод executeQuery().
п.3. попробуйте вместо метода modified() использовать selectionChange(), в котором будут вызываться executeQuery(). Также, похоже, что вы дважды присваиваете глобальной переменной значение, достаточно только в executeQuery().

P.S. Кстати, а что там внутри executeQuery()?
__________________
// no comments

Последний раз редактировалось dech; 01.09.2009 в 21:04.
Старый 01.09.2009, 21:29   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от dech Посмотреть сообщение
п.3. попробуйте вместо метода modified() использовать selectionChange(), в котором будут вызываться executeQuery().
А еще можно едит метод написать
Старый 02.09.2009, 08:27   #10  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
1.Обычно ComboBox используется в двух ситуациях:
  • когда пользователю необходимо выбрать одно или несколько значений из списка размером от 4-х до нескольких десятков позиций. Если позиций меньше, то проще использовать переключатели, если больше — то ориентироваться в списке становится неудобно и необходимо использовать специальные приемы, когда пользователь вводит первые буквы нужного слова и в списке остаются только значения, которые начинаются на эти буквы;
  • когда список позиций для выбора необходимо формировать динамически на основании данных из источника (базы данных, листа Excel и т.п.)
Для меня это Combobox, но если для вас это так важно, то это StringEdit. Lookup - это метод.

2.В executeQuery() Range'у присваиваем значение глобальной переменной (см. шаг 1). Так что дважды я нигде не присваиваю значение.
Старый 02.09.2009, 09:26   #11  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
В аксапте combobox используется для выбора значения из статического списка, основанного на Base Enum. На основании данных из источника - поле с лукапом. Это не суть важно, но все же combobox и stringedit - два разных объекта.
По каким полям фильтруете?
__________________
// no comments
Старый 02.09.2009, 10:07   #12  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Проблему решил. Фильтрую по складу.

Появился другой вопрос. Можно ли из метода lookup() вызвать скажем какую-нибудь форму InventLookup ?

Последний раз редактировалось KpecT; 02.09.2009 в 10:12.
Старый 02.09.2009, 12:16   #13  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Конечно, обычный FormRun. Но если нужно только вызывать форму-лукап, то можно указать её в свойстве FromHelp на EDT.
__________________
// no comments
Старый 02.09.2009, 13:09   #14  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Пример: есть скажем таблица InventDim поле InventLocationId на нем уже есть EDT c FromHelp. Мне нужно на определенной форме перекрыть lookup, другим EDT с FromHelp.
Старый 02.09.2009, 15:08   #15  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Не забудьте у контрола MyStringEdit поставить AutoDeclaration в Yes:
X++:
MyStringEdit.extendedDataType(extendedtypenum(SalesId));
__________________
// no comments
Теги
grid, фильтр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
Dynamics AX: DAX 4.0 Filter by Grid [Update] Blog bot DAX Blogs 0 27.04.2007 17:10
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44
Программируемый фильтр по Grid ArturK DAX: Программирование 6 01.03.2004 09:23

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

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

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