|
23.09.2008, 16:41 | #1 |
Участник
|
Набор данных на лету
Можно ли создавать подобие темповой таблицы на лету? Мap не предлагать - нужно больше полей. Темповая таблица - простое решение, но в AOT её существовать не должно.
__________________
Axapta has seduced me deadly! |
|
23.09.2008, 16:50 | #2 |
Участник
|
а так? скока хочешь полей
Map m = new Map(types::Container, types::Container);
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
23.09.2008, 17:23 | #3 |
Участник
|
Цитата:
Замучаешься потом разбираться в каком порядке элементы были упакованы в контейнер и при последующий модификациях возможны проблемы. Чем не подходит временная таблица? Если не известно заранее количество полей, то тогда другого выхода тоже не вижу. Если же есть логический предел для кол-ва полей - то создать временную таблицу на все поля, и затем Map m = new Map(ключ, Types::record), т.е. паковать в мап таблицу (record - ваша временная таблица). Так будет проще, нагляднее и удобнее для последующих модификаций, ИМХО. |
|
23.09.2008, 17:04 | #4 |
Участник
|
Ха, отличная идея!)
__________________
Axapta has seduced me deadly! |
|
23.09.2008, 17:12 | #5 |
Участник
|
Возможно, стоит попробовать ADO конкретно ADO.RecordSet. На форуме я видел пример его использования.
Если же у Вас 4-я версия, то обратите внимание на ADO.Net. Сам недавно ковырялся с ним и что-то даже получалось.
__________________
Функциональное тестирование сайтов |
|
23.09.2008, 19:15 | #6 |
Участник
|
Есть еще такой класс, как struct, который, по сути, является подобием таблицы, но его можно задавать динамически
|
|
|
За это сообщение автора поблагодарили: HorrR (1). |
24.09.2008, 12:35 | #7 |
Участник
|
Как насчет System.Collections.ArrayList ?! К сожелению Ax 2009 не поддерживает Generics, то есть List<T> использовать не получииться (прийдется как в .Net 2.0 работать со структурами данних). Ограничений почти ни каких :0), правда вроде как надо еще об CAS помнить new InteropPermission(InteropKind::ClrInterop)
__________________
Thx, Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/ |
|
|
За это сообщение автора поблагодарили: HorrR (1). |
24.09.2008, 13:02 | #8 |
MCTS
|
Классы
X++: RecordSortedList RecordLinkList |
|
|
За это сообщение автора поблагодарили: HorrR (1). |
26.09.2008, 12:09 | #9 |
Участник
|
CDR, дело в том, что конструкторы этих классов принимают TableID в качестве параметра, то есть использование ни чем не отличается в разрезе моей проблемы от установления таблицы темповой из кода и работы с ней. В любом случае таблица должна существовать в AOT, что меня не устраивает. Но всё-равно спасибо.
__________________
Axapta has seduced me deadly! |
|
26.09.2008, 12:52 | #10 |
Moderator
|
А не поделитесь секретом почему? Ведь можно один раз создать в АОТ временную таблицу на все такие последующие случаи жизни, с кучей полей разных примитивных типов - например, по сотне полей на тип (ну или меньше/больше): целые - с именами, допустим, i01..i99, реалы - r01..r99, даты - d01..d99, строки - s01..s99 (с длиной 255 символов). Получится такой временно-табличный "Excel", который можно потом и в хвост, и в гриву.
|
|
26.09.2008, 13:17 | #11 |
Administrator
|
В 4-ке у ADO.RecordSet есть один минус. Его из-за InteropPermission можно создать только на клиенте (я бы только из-за этого - поставил в опциях аоса caslevel=disable - чтобы отключить все эти разрешения).
В общем случае создать виртуальную таблицу без АОТ не получится (хотя формально - вам никто не запрещает создать ее в АОТ программно и также программно прибить ее оттуда после использования - но это уже извращение). Однако, в частном случае - можно взять любую таблицу из АОТ из уже имеющихся и приспособить под свои частные нужды. Для постояных таблиц - вызвать метод setTmp(). Т.о. получим любую из имеющихся таблиц - как временную.
__________________
Возможно сделать все. Вопрос времени |
|
26.09.2008, 13:42 | #12 |
Moderator
|
Цитата:
Неприятностей там, на мой взгляд, две:
|
|
26.09.2008, 13:43 | #13 |
Ищущий знания...
|
Цитата:
Всё таки на мой взгляд лучче создать одну универсальную таблицу в AOT и использовать её где угодно.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
26.09.2008, 13:47 | #14 |
Участник
|
|
|
26.09.2008, 13:55 | #15 |
Moderator
|
Как я понимаю, таблицу, которую я предложил выше, весьма запарно создавать в АОТ вручную. Поэтому выкладываю сгенерированный в Excel минимальный проектик для создания такой таблицы. У себя я уже создал, может, заодно и сам начну наконец использовать
P.S. Таблица, которая будет создана, имеет название "JustLikeExcel". Не страшно, что в окне импорта, она отображается как "Yes" - эта форма просто читает значение из 10-й строки файла проекта (почему-то). С моей стороны - всё чисто, не волнуйтесь! (DAX 3.0, SP4). |
|
26.09.2008, 15:21 | #16 |
Участник
|
Вставь между "***Element: DBT" и "TABLEVERSION 1" три пустые строки и будет все Ok
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
Теги |
ax3.0, ax4.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Невозможно выполнить команду языка определения данных в () | 8 | |||
Стандартный импорт данных. Обновление | 0 | |||
Распределенная база данных на основе View | 27 | |||
Введение в Аксапту | 0 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|