AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 14.04.2008, 14:43   #1  
Zoe ist offline
Zoe
Участник
 
14 / 10 (1) +
Registriert seit: 23.03.2008
Ort: Санкт-Петербург
:( Проблема вызова метода доступа (Enum'ы!)
Добрый день!!! Столкнулась с непреодолимой для себя проблемой (занимаюсь программированием в Axapt’е целых две недели, параллельно осваивая ООП J ). В двух словах: Программа для печати некоторых документов. По нажатию на разные кнопки в форме вызываются два разных метода (назовем их Meth_A и Meth_B), которые передают в специальный класс для передачи данных Cls_PassParam данные из одного поля, заполненного пользователем («Категория»). Данное поле имеет расширенный тип Enum, Z_Category. Метод доступа класса cls_PassParam имеет стандартный вид:
PHP-Code:
public Z_Category Pass_z_c (Z_Category _z_c z_c)
{
z_c _z_c;
return 
z_c;} 
Обращение к данному методу из двух разных методов печати приводит к разным результатам: в первом случае, при вызове из метода PrintCategory, категория отображается как положено, во втором - при вызове из метода PrintShowReport – она вообще не отображается. Понимаю, что чудес не бывает, поэтому хотелось бы как-то рационально объяснить происходящее. Для чистоты эксперимента строки вызова сделала идентичными и в методах, записывающем параметры в класс PassParam (например, метод meth_PrintCATEGORY),
PHP-Code:
void meth_PrintCATEGORY()
{
Cls_PrintStockLabel z_cls_PrintStockLabel;
Z_category z_category;
Cls_PassParam z_cls_PassParam = new Cls_PassParam();
Args _args
;
_args element.args();
<

z_category str2enum(Z_CategoryUserCategoryComboBox.valueStr());
z_cls_PassParam.Pass_z_c(z_category);
<...> } 
,
и в методах, вызывающих форму для печати (например, метод PrintShowReport)
PHP-Code:
void PrintShowReport(Cls_PassParam cls_passParamcontainer ElemCont)
{
FormDataSource formDataSource;
SysOperationProgress operationProgress;
Z_Category z_c;
<

if (
this.CategMeth(cls_PassParam.Pass_z_c()) != "PR_0")
{
fr.setVar('Categoria''\''this.CategMeth(cls_PassParam.Pass_z_c()) + '\'');
}
<
fr.show();} 
Да, и сам метод CategMeth
PHP-Code:
str CategMeth(Z_Category z_c)
{switch (
z_c)
{case 
Z_Category::PR1:
return 
"PR_1";
<
>
}
return 
"PR_0"; } 
Еще хочу отметить, что при отладке метод Pass_z_c возвращает 0. И, казалось бы, программка не должна была бы вообще работать... Однако на практике она не работает только во втором случае, в первом же – печатает безотказно и все как положено...
Простите меня, я в самом деле дилетант и прошу вашей помощи. Спасибо заранее огромное!
Alt 14.04.2008, 15:12   #2  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Не очень понятно вы написали.

Но проблема порылась где-то здесь.
Zitat:
Zitat von Zoe Beitrag anzeigen
X++:
z_category = str2enum(Z_Category, UserCategoryComboBox.valueStr());
z_cls_PassParam.Pass_z_c(z_category);
Если у вас комбобокс типа Z_Category, то не надо заниматься преобразованием в строку и обратно. Просто берите значение.

См. формы с префиксом tutorial_*
В частности там есть примеры работы с диалогом.
__________________
полезное на axForum, github, vk, coub.
Alt 14.04.2008, 17:54   #3  
Zoe ist offline
Zoe
Участник
 
14 / 10 (1) +
Registriert seit: 23.03.2008
Ort: Санкт-Петербург
Mazzy, спасибо Вам большое! Я сейчас попробую реализовать Вашу идею. Но все-таки - вопрос у меня остался: почему же при обращении к одному и тому же методу доступа в классе PassParam (поправьте меня, если я ошибаюсь в терминологии - я ведь и в самом деле новичок пока, а в дальнейшем мне бы хотелось более понятно выражаться, оперируя понятиями Axapt'ы и среды MorphX) выполняются два разных действия?! Причем даже, точнее выражаясь, одно-то выполняется без проблем, а второе - вообще не выполняется...
Alt 14.04.2008, 18:27   #4  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von Zoe Beitrag anzeigen
Но все-таки - вопрос у меня остался: почему же при обращении к одному и тому же методу доступа в классе PassParam (поправьте меня, если я ошибаюсь в терминологии - я ведь и в самом деле новичок пока, а в дальнейшем мне бы хотелось более понятно выражаться, оперируя понятиями Axapt'ы и среды MorphX) выполняются два разных действия?!
Потому что один раз вы вызываете метод с параметром, а другой раз без параметра.


Zitat:
Zitat von Zoe Beitrag anzeigen
PHP-Code:
Cls_PassParam z_cls_PassParam = new Cls_PassParam();
...
z_cls_PassParam.Pass_z_c(z_category); 
,
Здесь с параметром.
следовательно, приватная переменная класса получит значение, указанное здесь в качестве параметра.

Zitat:
Zitat von Zoe Beitrag anzeigen
PHP-Code:
fr.setVar('Categoria''\''this.CategMeth(cls_PassParam.Pass_z_c()) + '\''); 
А здесь без параметра.
Сысл такого вызова следующий: я не хочу менять приватную переменную. Я хочу всего лишь прочитать что там было раньше.

я не очень понимаю что там не должно работать.
Если вы хотите продолжать спрашивать, то сократите ваш код еще. Уберите то, что не относится к вопросу. напишите что вы ожидаете увидеть в результате правильной работы.
__________________
полезное на axForum, github, vk, coub.
Alt 14.04.2008, 23:48   #5  
Zoe ist offline
Zoe
Участник
 
14 / 10 (1) +
Registriert seit: 23.03.2008
Ort: Санкт-Петербург
Mazzy, спасибо Вам еще раз огромное! Подправила, отладила, даже перезагрузила - все работает. Так что спрашивать больше пока, увы, нечего!.. У Вас замечательный сайт. Спасибо!
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Проблема с правами доступа к данным velk DAX: Администрирование 12 14.11.2007 22:58
Проблема доступа через COM Connector wit DAX: Функционал 0 10.07.2006 12:34
Проблема с назначением доступа к таблице Договора Hidden DAX: Администрирование 5 17.11.2004 12:43
OLAP, проблема, ENUM в качестве аналитики z_av DAX: База знаний и проекты 1 22.07.2003 17:55
Проблема с правами доступа sa2002as DAX: Администрирование 1 30.06.2003 13:28
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 04:10 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.