11.02.2008, 06:30 | #1 |
Участник
|
Set записей таблицы
Прошу прощения за,наверное,глупый вопрос-но я совсем еще новичок
Как самым эффективным способом сохранить записи таблицы в Set?Сперва загнать их в контейнеры,а потом создать сет контейнеров?Или есть способ сохранять строки таблицы напрямую?И если есть,то как потом к ним обращаться? Последний раз редактировалось OOuph; 11.02.2008 в 06:45. |
|
11.02.2008, 07:37 | #2 |
Участник
|
Можно сохранять записи на прямую
X++: set set; ; set = new SET(Types::Record); set.add(custTable::find("........"));
__________________
Нет ничего сложного есть простое и неправильное Последний раз редактировалось jasper; 11.02.2008 в 07:42. |
|
11.02.2008, 08:06 | #3 |
Участник
|
Спасибо, рекорды я и ранише пробовал добавлять-но не могу вывести значение поля.Т.е. сохраняем сет рекордов, потом по итератору обращаемся к рекорду-но как вывести его определенное поле?Например,ItemName из записи таблицы InventTable
X++: List l = new List(Types::Record); InventTable it; ListIterator li; while select it where it.ItemGroupId == "Тара"{ l.addEnd(InventTable::find(it.ItemId)); i++; } li = new ListIterator(l); while (li.more()) { /* info(li.value().ItemName()); - так не работает,естессно. Как надо? */ li.next(); } |
|
11.02.2008, 08:58 | #4 |
Administrator
|
X++: List l = new List(Types::Record); InventTable it; ListIterator li; while select it where it.ItemGroupId == "Тара"{ l.addEnd(InventTable::find(it.ItemId)); i++; } li = new ListIterator(l); while (li.more()) { /* info(li.value().ItemName()); - так не работает,естессно. Как надо? */ //-----------------------------> it = li.value(); info(it.itemName); //<----------------------------- li.next(); }
__________________
Возможно сделать все. Вопрос времени |
|
11.02.2008, 10:16 | #5 |
Участник
|
Цитата:
чтобы обойти это ограничение ядра, лучше использовать для перебора класс Enumerator Он работает безглючно и при его использовании меньше способов ошибиться и уйти в бесконечный цикл. |
|
11.02.2008, 10:17 | #6 |
Участник
|
Все,тему можно закрывать
X++: InventTable it; li = new ListIterator(l); while (li.more()) { it=li.value(); info(it.itemName()); li.next(); } |
|
11.02.2008, 10:27 | #7 |
Moderator
|
Замените итератор на енумератор, как советует Logger, и закрывайте
Итераторы - в музей, они оставлены для обратной совместимости. Подробности в книжке Microsoft Dynamics AX 4.0 на стр.494-496. Либо здесь http://dax-dilettante.blogspot.com/2...hapter155.html в раздельчике "Перебор элементов в коллекции". |
|
|
|