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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.04.2006, 19:54   #1  
murad is offline
murad
Участник
 
55 / 10 (1) +
Регистрация: 05.10.2005
? enum через COM
Использую доступ извне через COM
Составляю запрос Query, добавляя к нему QueryBuildDataSource стандартно.
Но таблица связана с enumami.
Каким образом можно получить описание (Label) каждого элемента перечисления в запросе?
AddDataSource(), как я понял принимает только Table на вход, а как привязать enum непонятно
Старый 25.04.2006, 20:16   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
может быть можно вызвать Global::queryValue?
Старый 26.04.2006, 10:54   #3  
murad is offline
murad
Участник
 
55 / 10 (1) +
Регистрация: 05.10.2005
Цитата:
Сообщение от belugin
может быть можно вызвать Global::queryValue?
Благодарю, но мне требуется несколько иное.
Можно конечно вытащить заранее все значение enuma в массив, а потом при выполнении запроса подставлять вместо идентификаторов соответствующие текстовые значения.
Но мне хотелось бы чтобы эти значения были уже в результате выполнения запроса.
То есть хочу смотреть на enum как на обычную таблицу с полями ID и Text (или что-то в этом роде)
Старый 26.04.2006, 11:59   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Взгляните на класс DictEnum - может это то, что вам требуется?
__________________
Axapta v.3.0 sp5 kr2
Старый 26.04.2006, 12:39   #5  
murad is offline
murad
Участник
 
55 / 10 (1) +
Регистрация: 05.10.2005
Цитата:
Сообщение от AndyD
Взгляните на класс DictEnum - может это то, что вам требуется?
К сожалению опять не то.
Хорошо, тогда переформулирую задачу. Возьмем, например, таблицу SalesTable. В ней есть поле SalesType типа enum.
Если я просто выберу данные из таблицы, то получу естественно в результате запроса в качестве SalesType идентификаторы 1,2,3,4..., а я хочу получить "Journal", "Quotation" и проч.

Как это делают стандартно?
Старый 26.04.2006, 12:56   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
если вы хотите сделать при помощи аксаптовского SQL - никак (кроме заведения собственной таблицы)

Стандартный способ - получить значение, а потом strFmt('%1', value)
За это сообщение автора поблагодарили: murad (1).
Старый 26.04.2006, 13:39   #7  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Если будете преобразовывать цифры в текст, то рекомендованный класс DictEnum то что надо
Если хотите джойнить с таблицей, то посмотрите как это реализовано для олапа - таблица OLAPEnums и класс OLAPCreateSchema
За это сообщение автора поблагодарили: murad (1).
Старый 26.04.2006, 13:43   #8  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Посмотрите как работают бизнес-представления в Аксапте. Там заявлено (и реализовано) решение поставленной вами проблемы.

Код смотреть лениво очень, но суть сводится к тому, что создается некий view (м.б. сразу по нескольким компаниям) и табличка BaseEnumTable в БД. Потом строится запрос с JOIN по этой табличке.

Посмотрите ее в АОТ. Там есть интересный метод ::create(). Опять же лень проверять, но м.б. она вам сгодится.

Хотя нет. На ней ключ конфигурационный висит. Но вы можете сделать свою. Еще лучшую.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: murad (1).
Старый 26.04.2006, 15:52   #9  
murad is offline
murad
Участник
 
55 / 10 (1) +
Регистрация: 05.10.2005
Спасибо за ответы, но вариант с созданием таблицы мне не очень подходит.
Остановился на том, что для каждой колонки типа enum создаю хеш-таблицу (HashTable в .NET), где ключом является num, а значением строка, которую получаю через DictEnum

А уже при получении данных определяю строковый эквивалент через hashTable[num]
Работает достаточно шустро. Благо, что значение в перечислении не так много
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Построчный импорт из Excel через COM olesh DAX: Программирование 20 23.10.2008 14:01
Проблема с импортом из Excel через COM Romsrs DAX: Программирование 18 10.06.2008 10:34
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) gl00mie DAX: Программирование 15 30.03.2007 18:37
связь с 1С через COM rinugun DAX: Программирование 9 03.12.2004 11:28

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:11.