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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.01.2003, 08:00   #1  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
? Как пройтись по таблице
ПОМОГИТЕ ПОЖАЛУЙСТА СРОЧНО!
Как пройтись по таблице? заменить значения полей со строк-го на enum?
Старый 17.01.2003, 08:46   #2  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
проитись по таблице можно так :

Table myTable;
;
while select forUpdate myTable
{
myTable.myField = MyEnum::newValue;
myTable.update();
}

вот только что такое "строк-го" ?
__________________
С уважением, Вячеслав.
Старый 17.01.2003, 08:51   #3  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
тип String
Старый 17.01.2003, 09:03   #4  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
тогда придется создать другое поле, и изменить его значения в соответствии со стринговым.
__________________
С уважением, Вячеслав.
Старый 17.01.2003, 09:37   #5  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
Я нашла (str2enum), а как обявить эту MyEnum
Спасибо
Старый 17.01.2003, 09:39   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Надо создать Enum с соответствующим именем в Base Enums в AOT.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.01.2003, 09:47   #7  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
Напиши пожалуйста пример кода создания своего MyEnum с использованием Base Enum.

т.е.

void ....
{
???? MyEnum;

....

}
Старый 17.01.2003, 09:59   #8  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
static void Job32(Args _args)
{
TreeNode treeNode;
xInfo xInfo = new xInfo();
;
treeNode = xInfo.rootNode();
treeNode = treeNode.AOTfindChild("Data Dictionary");
treeNode = treeNode.AOTfindChild("Base Enums");
treeNode.AOTadd("MyNewEnum");
treeNode.AOTsave();
treeNode = treeNode.AOTfindChild("MyNewEnum");
treeNode.AOTadd("element1");
treeNode.AOTadd("element2");
treeNode.AOTsave();

}
вот так можно создать свой Enum (это если Вам лень добавить его вручную в АОТ)
__________________
С уважением, Вячеслав.
Старый 17.01.2003, 10:03   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
  1. В AOT надо зайти в Data Dictionary/Base Enums.
  2. Создать там Base Enum. Например, MyEnum. Далее перечислить в нем все его возможные значения.
  3. В коде написать следующее:
    PHP код:
    {
    ...
        
    MyEnum _myEnum;
    ...
        
    // Допустим у Enum есть значение A. 
        
    _myEnum MyEnum::A;
    ...
        
    // Чтобы использовать str2enum - написать следующее 
        // (предположим, что у enum есть значение с меткой A
        
    _myEnum str2enum(_myEnum"A");
    ...

Создавая Base Enum в AOT Вы фактически создаете тип. _myEnum - переменная этого типа. У str2enum два параметра: переменная типа enum (чтобы получить информацию о enum'е) и строковое значение метки.

Если будет время, рекомендую прочитать раздел руководства разработчика Axapta Language Reference/Data types/Enums (axdvgus.chm::/LANG/Data_types/LANG_Enum.htm)
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.01.2003, 10:04   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано slava
вот так можно создать свой Enum (это если Вам лень добавить его вручную в АОТ)
Боюсь, что вопрос все-таки не про это
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.01.2003, 10:29   #11  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
Не могу разобраться вот в чем.

Надо в таблице SalesTable поменять поле SalesStatus на значение, которое в enumуреции SalesStatus имеет метку 'Открытый заказ'

Т.е. проблема в том, что я не могу из метки 'Открытый заказ' получить значение 1.

Т.е. как сопоставить метку и значение в enum? Какой функцией?
Старый 17.01.2003, 10:34   #12  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
2Maxim :
Да я понимаю наверное неудачно пошутил

2Natasha :
а какое значение имеет это поле сейчас ? SalesStatus::... ?
Кстати, лучше действительно прочитайте о Enum'ах
__________________
С уважением, Вячеслав.
Старый 17.01.2003, 11:02   #13  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано Natasha
Т.е. как сопоставить метку и значение в enum? Какой функцией?
У значений enum есть два независимых свойства: имя (name) и метка (label).

str2enum по типу Enum'а и значению метки возвращает переменную этого типа с соответствующей меткой. Например
PHP код:
    SalesStatus ss;
    
ss str2enum(ss"Открытый заказ"); // В ss значение enum'а с меткой "Открытый заказ"
    // ... по секрету, это SalesStatus::Backordered 
enum2str наоборот по значению enum'а возвращает его метку.

В принципе, enum'ы можно рассматривать и как значения типа int. Например, если вы сделаете int2str(SalesStatus::Backordered), получите так желаемую вами единицу.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.01.2003, 11:26   #14  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
Видимо степень моих незнаний так велика, но прошу снисхождения.
Далее идет текст Job, который выводит 'Открытый заказ' вместо 1,
а если вместо print SS использовать info (SS), то ошибка при компиляции.
ПОЧЕМУ?

static void Sales(Args _args)
{
SalesStatus _SS;
;

SS = str2enum(SS,'Открытый заказ');
print SS;
//info (SS);
}
Старый 17.01.2003, 11:33   #15  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
print автоматически выводит как раз label. Следующие два фрагмента кода эквивалентны:
PHP код:
print ss
PHP код:
print enum2str(ss); 
info в качестве параметра должен получить string. попробуйте один из двух следующих вариантов (в учебных целях - оба )
PHP код:
info(enum2str(ss)); 
PHP код:
info(int2str(ss)); 
Удачи.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.01.2003, 11:34   #16  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
2Maxim Gorbunov

> В принципе, enum'ы можно рассматривать и как значения типа int. Например, если
> вы сделаете int2str(SalesStatus::Backordered), получите так желаемую вами единицу.

Попробуйте сделать такой Job и посмотрите на сообщение компилятора, у меня пишет "Перечень не существует".

static void Sales(Args _args)
{
SalesStatus _SS;
;

print int2str(SS::Backordered);
}
Старый 17.01.2003, 11:45   #17  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Компилятор всегда прав

Дело в том, что _SS - это переменная. SalesStatus::Backordered - константа. Написать _SS::Backordered нельзя. Такой синтаксической структуры в X++ просто нет.

Варианты написания того, что Вы хотите:
  1. PHP код:
    _SS SalesStatus::Backordered;
    print 
    int2str(_SS); 
  2. PHP код:
    print int2str(SalesStatus::Backordered); 
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.01.2003, 11:45   #18  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Надо
print int2str(SalesStatus::Backordered);
__________________
С уважением, Игорь Ласийчук.
Старый 17.01.2003, 11:47   #19  
Natasha is offline
Natasha
Участник
 
58 / 11 (1) +
Регистрация: 17.01.2003
СПАСИБО ВСЕМ, ВСЕ ПОЛУЧИЛОСЬ!!!
Старый 17.01.2003, 11:47   #20  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Да, кстати, по поводу сообщения компилятора. Его смысл следующий. Обнаружив лексему SS::Backordered компилятор пытается найти Base Enum (тип!!!) с именем SS. Не находя его, он сообщает, что "перечень не существует". "Перечень" - это так "Enum" у нас перевели Спрашивается, зачем.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтрование записей при "переходе к основной таблице" demID DAX: Программирование 10 18.11.2015 12:52
как сохранить запрос в таблице kitty DAX: Программирование 13 19.11.2007 20:16
Переход на правильную запись при Переходе к основной таблице. - 2 Anais DAX: Программирование 2 01.11.2004 17:14
Переход на правильную запись при Переходе к основной таблице. Anais DAX: Программирование 11 29.06.2004 19:16
фильтр по связанной таблице mick_777 DAX: Программирование 13 21.08.2002 16:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:04.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.