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

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 19.05.2008, 09:36   #1  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
MapIterator не инициализируется
опять я со своими глупыми вопросами...в отчете объявил переменную с типом MapIterator присваиваю значение
X++:
it = new MapIterator(_mapBuff);
при исполнении кода выкидывает в дебагер и ругается что мапитератор не инициализирован...
до этого точно так же делал в одном отчете все работало..._mapBuff имеет одинаковые значения и в том отчете и в этом...что я делаю не так и куда копать подскажите...
Alt 19.05.2008, 09:45   #2  
Raven Melancholic ist offline
Raven Melancholic
Участник
Benutzerbild von Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2.164 / 1296 (48) ++++++++
Registriert seit: 21.03.2005
Ort: Москва-Петушки
Такое бывает, как правило, в двух случаях (случай когда инициирован один итератор, а используется другой не рассматриваем):
1) в мапе нет элементов;
2) мап получен через границу клиента и сервера;
Первый случай можно проверять при помощи метода map.elements, а во втором передавайте между процессами не сам мап, а на одной стороне упаковывайте, на другой создавайте из контейнера.
PS: на самом деле итератор оставлен для совместимости, лучше пользовать Enumerator.
Alt 19.05.2008, 09:51   #3  
miklenew ist offline
miklenew
Участник
Benutzerbild von miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1.688 / 438 (18) +++++++
Registriert seit: 10.07.2006
Ort: г. Ликино-Дулёво
Я когда вываливаются странные ошибки сразу создаю job. Чтоб исключить вариации. Рекомендую.
Не знаю мож как вариант: А сепаратор(точка с запятой) между объявлением и реализацией есть.
Alt 19.05.2008, 09:53   #4  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
в мапе элементы есть...это факт смотрел через дебагер все там путем...
а насчет воторого случая я не понял о чем ты..,
Alt 19.05.2008, 09:55   #5  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
есть точка с запятой...говорю в точно таком же отчете все равботает...мне нужно впринципи такой же отчет тока с небольшой модификацией сделать...я продублировал отчет но пока модификаций не делал...
Alt 19.05.2008, 10:52   #6  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
попробуйте создавать его (
X++:
it = new MapIterator(_mapBuff);
) уже после того, как мап будет заполнен, а не в блоке объявления переменных.
Alt 19.05.2008, 10:58   #7  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
сделал отдельный метод передал в него мар и там создавал мап итератор который и возвращал...
результат тот же самый... блин я вообще не врубаюсь что не так...
Alt 19.05.2008, 11:04   #8  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
я в мапитератор должен передать объект типа мап заполненный...я его передаю...он заполнен...и тип соответствует...что не так...???
Alt 19.05.2008, 11:11   #9  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
я имел ввиду:
X++:
MapIterator it; // вместо  MapIterator it = new MapIterator(_mapBuff);
;

...   _mapBuff ...

it = new MapIterator(_mapBuff);

...    it
Alt 19.05.2008, 11:19   #10  
Raven Melancholic ist offline
Raven Melancholic
Участник
Benutzerbild von Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2.164 / 1296 (48) ++++++++
Registriert seit: 21.03.2005
Ort: Москва-Петушки
Zitat:
Zitat von V777 Beitrag anzeigen
а насчет воторого случая я не понял о чем ты..,
Например: мап создается и заполняется на сервере, а используется на клиенте. В этом случае нужно передавать не мап, а контейнер. Скажем, в метод, который использует мап делаем не так:
X++:
void myMetod(Map _mapItems)
{
     MapIterator miItems;
     ;
     miItems = new MapIterator(mapItems);
     while (miItems.more())
     {
         ...
         miItems.next()
     }
     ...
}
вызов: myClass.myMetod(mapItems);
а так:
X++:
void myMetod(container _contems)
{
     MapIterator miItems;
     ;
     miItems = new MapIterator(Map::Create(contems));
     ...
}
вызов: myClass.myMetod(mapItems.pack());
А вообще лучше:
X++:
void myMetod(Map _mapItems)
{
     MapEnumerator meItems;
     ;

     meItems =  mapItems.getEnumerator();

     while (meItems.moveNext())
     {
     ...
     }
}
This post has been rated by: V777 (1).
Alt 19.05.2008, 11:36   #11  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
Eldar9x
_mapBuff заполняется в классе...а в отчете
X++:
    _mapBuff = rCustVendTurnoverHolder.getMapBuff();

    it = new MapIterator(_mapBuff);
Alt 19.05.2008, 11:37   #12  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
Raven Melancholic
ща осмыслю что ты написал и попробую..,
Alt 19.05.2008, 11:42   #13  
Raven Melancholic ist offline
Raven Melancholic
Участник
Benutzerbild von Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2.164 / 1296 (48) ++++++++
Registriert seit: 21.03.2005
Ort: Москва-Петушки
Zitat:
Zitat von V777 Beitrag anzeigen
Raven Melancholic
ща осмыслю что ты написал и попробую..,
Ну, для твоего случая:
в getMapBuff объявляешь:
container getMapBuff(...)
возврат делаешь:
map.pack();
а в отчете:
_mapBuff = Map::create(rCustVendTurnoverHolder.getMapBuff());
Alt 19.05.2008, 11:49   #14  
V777 ist offline
V777
совсем зелен
 
249 / 10 (1) +
Registriert seit: 15.04.2008
Raven Melancholic
сработало!!! спасиба огромное..,
 


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 19:38 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.