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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.06.2011, 15:04   #1  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Форма с комбо и запуск разных форм по выбранному значению
Самое простое решение это создание кучи однотипных форм которые вызываются из общей формы по нажатию соответствующей кнопки.
Проблема в том что больше половины из них абсолютно одинаковы и различаются что в executeQuery фильтр= 4, в другой форме 5 и.д. Т.е. copy-paste и дело в шляпе. Но не хочется засорять. Есть несколько которые особенные.
Хочется сделать форму с комбо всех опций. А в executeQuery что-то типа
case 4:
//особая форма как её запустить?
case 1,2,3,6,7:
//запустить общую форму но передать в неё параметр для фильтрации 1 или 2 или 3 .. то что пользователь выберет

Или такое возможно и нужно ли много программировать?(уровень начинающий)

В основной таблице одни и те же поля использовались для разных значений в зависимости от параметра.(типа то номер телефона, то номер машины)
И ещё вопрос если есть возможность в общей форме сделать часть полей невидимыми в зависимости от выбранного параметра и менять названия поля в гриде
Видимо это тоже надо как-то передавать ?
Старый 16.06.2011, 15:10   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Вопрос сводится к такому. Как передать на форму параметр?
Для этого нужно использовать структуру Args. Ищите на форуме
Старый 16.06.2011, 15:27   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
можно на одну форму создать много MenuItem-ов. У них заполнить свойства EnumTypeParameter и EnumParameter. И в дальнейшем вызывать нужные вам MenuItem-ы.

На самой форме вы увидите эти параметры через element.args(). В частности:
X++:
element.args().parmEnumType();
element.args().parmEnum();
element.args().parmEnumType(); - это какой Enum у Вас передан в параметре
element.args().parmEnum(); - это какое значение Enuma передано
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.06.2011, 13:56   #4  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
lev'
у меня не Enum а ExtendetDataType
т.е. я не могу записать их в MenuItem поле EnumTypeParameter .
Создавать свой Enum или как-то по другому можно используя ExtendetDataType
Старый 23.06.2011, 14:13   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
lev'
у меня не Enum а ExtendetDataType
т.е. я не могу записать их в MenuItem поле EnumTypeParameter .
Создавать свой Enum или как-то по другому можно используя ExtendetDataType
Правильно ли я понимаю, что комбобокс у вас не основан не перечислении BaseEnum, а отображает значения некоторого справочника?

Тогда в args можно передавать соответствующую запись этого справочника. Для передачи табличных курсоров в структуре args предусмотрен метод record().

Если немного изменить дизайн формы и вместо комбобокса отобразить грид отображающий те же значения, то тогда можно стандартными средствми MorphX (без программирования) добиться передачи активной строки грида через menuitem

Последний раз редактировалось S.Kuskov; 23.06.2011 в 14:16.
Старый 23.06.2011, 14:31   #6  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Правильно ли я понимаю, что комбобокс у вас не основан не перечислении BaseEnum, а отображает значения некоторого справочника?

да Вы правы ExtendetDataType привязан к таблице.
Честно пока с Args не очень понятно - пытаюсь читать форум. Может есть ссылки или tutorial в самой DAX 2009

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если немного изменить дизайн формы и вместо комбобокса отобразить грид отображающий те же значения, то тогда можно стандартными средствми MorphX (без программирования) добиться передачи активной строки грида через menuitem
это как? Я начинающий
Старый 23.06.2011, 14:15   #7  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
У MenuItem-ов есть еще такое свойство как Parametersю. Туда можно писать все что угодно , например, какой нибудь текст "Вариант1",2,3 и т.д.
И в форме получать его через element.args().parm();
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: S.Kuskov (2), timaluhs (1).
Старый 23.06.2011, 14:56   #8  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от timaluhs Посмотреть сообщение
Хочется сделать форму с комбо всех опций. А в executeQuery что-то типа
case 4:
//особая форма как её запустить?
case 1,2,3,6,7:
//запустить общую форму но передать в неё параметр для фильтрации 1 или 2 или 3 .. то что пользователь выберет
Ну сделайте вы основной форме меню - MenuButton, прикрепите к нему несколько MenuItem-ов, которые будут открывать вашу форму ,у которых в свойстве Parameters будет стоять текстовое значение. У одного - '4', у второго - '1', у третьего '2' и т.д.
В основное форме создайте переменную типа str _variant.
В методе init() вашей формы перед супером напишите _variant = element.args().parm();
И далее как вы просите в executeQuery что-то типа
case 4:
................
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 23.06.2011, 15:18   #9  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от Pustik Посмотреть сообщение
Ну сделайте вы основной форме меню - MenuButton, прикрепите к нему несколько MenuItem-ов, которые будут открывать вашу форму ,у которых в свойстве Parameters будет стоять текстовое значение. У одного - '4', у второго - '1', у третьего '2' и т.д.
В основное форме создайте переменную типа str _variant.
В методе init() вашей формы перед супером напишите _variant = element.args().parm();
И далее как вы просите в executeQuery что-то типа
case 4:
................
Именно это я и пытаюсь сделать
На форме1 есть MenuItem который вызывает форму2
все определения я делаю на форме 2?
вот код

ClassDeclaration
str _variant;

init:
_variant = element.args().parm();
super();

executeQuery:
queryAuto.value(sysQuery::value(_variant));
...
super;

получаю пустую форму
если в явном виде - queryAuto.value(sysQuery::value("12")); то выдаёт результат

Где я не права?
Debuger на _variant ругается:
Error: Symbol "_variant" was not found

Последний раз редактировалось timaluhs; 23.06.2011 в 15:21.
Старый 23.06.2011, 15:30   #10  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от timaluhs Посмотреть сообщение
...
Debuger на _variant ругается:
Error: Symbol "_variant" was not found
переменную _variant заполняете в init формы или в init датасорса?
и воспользуйтесь советом Pustik посмотрите в отладчике заполняется ли _variant каким либо значением.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.06.2011, 15:43   #11  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от lev Посмотреть сообщение
переменную _variant заполняете в init формы или в init датасорса?
и воспользуйтесь советом Pustik посмотрите в отладчике заполняется ли _variant каким либо значением.
попробовала и init формы и в init датасорса одинаково -
Debuger на _variant ругается:
Error: Symbol "_variant" was not found
а где правильно?
Старый 23.06.2011, 16:09   #12  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от timaluhs Посмотреть сообщение
попробовала и init формы и в init датасорса одинаково -
Debuger на _variant ругается:
Error: Symbol "_variant" was not found
а где правильно?
ну по идее конечно в ините формы нужно выполнить инициализацию по входящим параметрам из args.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.06.2011, 15:27   #13  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
в отладчике в executeQuery убедитесь, что переменная _variant имеет значение "12", потому что если если в явном виде - queryAuto.value(sysQuery::value("12")) работает, должно работать
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 23.06.2011, 15:29   #14  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Debuger на _variant ругается:
Error: Symbol "_variant" was not found
что может быть не на месте?
Старый 23.06.2011, 15:32   #15  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от timaluhs Посмотреть сообщение
Debuger на _variant ругается:
Error: Symbol "_variant" was not found
что может быть не на месте?
ещё вопросик, ругается при инициализации или при использовании в ExecuteQuery?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.06.2011, 15:38   #16  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Ну не знаю попробуйте в свойстве менюайтема parameters поставить ни число, а например "Вариант12".И в executeQuery тогда вот так :

switch (_variant)
{
case 'Вариант12':
queryAuto.value(sysQuery::value("12"));
...........

}
..........
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 23.06.2011, 15:49   #17  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
логичнее на форме, но обязательно до супера. Вообще не понятно, попробуйте просто тогда вот так:
В методе executeQuery :

if (element.args().parm() == 'Вариант12')
queryAuto.value(sysQuery::value("12"));
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 23.06.2011, 16:06   #18  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
заработало не понятно как и почему. Может не сохранила во время.
Я пыталась queryAuto.value(sysQuery::value(element.args().parm()));
но тоже не работало. Кстати отладчик упорно нр признаёт _variant хотя есть данные на форме
Старый 23.06.2011, 16:15   #19  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
можно усложнить задачу и чтобы MenuItem получал параметр из комбо, который ExtendetDataType не Enum и далее по написанной схеме с case?

Цитата:
Сообщение от Pustik Посмотреть сообщение
if (element.args().parm() == 'Вариант12')
queryAuto.value(sysQuery::value("12"));
или это уже сильно сложно для начинающих?
Старый 23.06.2011, 16:36   #20  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от timaluhs Посмотреть сообщение
можно усложнить задачу и чтобы MenuItem получал параметр из комбо, который ExtendetDataType не Enum и далее по написанной схеме с case?



или это уже сильно сложно для начинающих?
к менюатему можно прикрутить только Enum, об этом в начале вам говорил lev.
Вам можно было создать свой Enum, создать в нем элементы, как ваши варианты прикрутить его к менюайтемам и использовать конструкцию, о которой говорил lev. Так было бы даже, можно так сказать, красивее .
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Теги
executequery, комбо

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Открытие форм с сервера с использованием MenuFunction gl00mie DAX: Программирование 6 01.04.2009 17:08
Настройка форм для групп пользователей Андре DAX: Администрирование 3 17.10.2004 10:59
Управление настройками форм LTA DAX: Программирование 11 11.12.2003 14:20
Настройка форм для групп пользователей Роман Кошелев DAX: Функционал 14 05.08.2002 16:32
Произвольная Lookup форма Maxim Gorbunov DAX: База знаний и проекты 0 30.11.2001 21:59

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

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

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