25.04.2006, 19:54 | #1 |
Участник
|
enum через COM
Использую доступ извне через COM
Составляю запрос Query, добавляя к нему QueryBuildDataSource стандартно. Но таблица связана с enumami. Каким образом можно получить описание (Label) каждого элемента перечисления в запросе? AddDataSource(), как я понял принимает только Table на вход, а как привязать enum непонятно |
|
25.04.2006, 20:16 | #2 |
Участник
|
может быть можно вызвать Global::queryValue?
|
|
26.04.2006, 10:54 | #3 |
Участник
|
Цитата:
Сообщение от belugin
может быть можно вызвать Global::queryValue?
Можно конечно вытащить заранее все значение enuma в массив, а потом при выполнении запроса подставлять вместо идентификаторов соответствующие текстовые значения. Но мне хотелось бы чтобы эти значения были уже в результате выполнения запроса. То есть хочу смотреть на enum как на обычную таблицу с полями ID и Text (или что-то в этом роде) |
|
26.04.2006, 11:59 | #4 |
Участник
|
Взгляните на класс DictEnum - может это то, что вам требуется?
__________________
Axapta v.3.0 sp5 kr2 |
|
26.04.2006, 12:39 | #5 |
Участник
|
Цитата:
Сообщение от AndyD
Взгляните на класс DictEnum - может это то, что вам требуется?
Хорошо, тогда переформулирую задачу. Возьмем, например, таблицу SalesTable. В ней есть поле SalesType типа enum. Если я просто выберу данные из таблицы, то получу естественно в результате запроса в качестве SalesType идентификаторы 1,2,3,4..., а я хочу получить "Journal", "Quotation" и проч. Как это делают стандартно? |
|
26.04.2006, 12:56 | #6 |
Участник
|
если вы хотите сделать при помощи аксаптовского SQL - никак (кроме заведения собственной таблицы)
Стандартный способ - получить значение, а потом strFmt('%1', value) |
|
|
За это сообщение автора поблагодарили: murad (1). |
26.04.2006, 13:39 | #7 |
Роман Долгополов (RDOL)
|
Если будете преобразовывать цифры в текст, то рекомендованный класс DictEnum то что надо
Если хотите джойнить с таблицей, то посмотрите как это реализовано для олапа - таблица OLAPEnums и класс OLAPCreateSchema |
|
|
За это сообщение автора поблагодарили: murad (1). |
26.04.2006, 13:43 | #8 |
Member
|
Посмотрите как работают бизнес-представления в Аксапте. Там заявлено (и реализовано) решение поставленной вами проблемы.
Код смотреть лениво очень, но суть сводится к тому, что создается некий view (м.б. сразу по нескольким компаниям) и табличка BaseEnumTable в БД. Потом строится запрос с JOIN по этой табличке. Посмотрите ее в АОТ. Там есть интересный метод ::create(). Опять же лень проверять, но м.б. она вам сгодится. Хотя нет. На ней ключ конфигурационный висит. Но вы можете сделать свою. Еще лучшую.
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: murad (1). |
26.04.2006, 15:52 | #9 |
Участник
|
Спасибо за ответы, но вариант с созданием таблицы мне не очень подходит.
Остановился на том, что для каждой колонки типа enum создаю хеш-таблицу (HashTable в .NET), где ключом является num, а значением строка, которую получаю через DictEnum А уже при получении данных определяю строковый эквивалент через hashTable[num] Работает достаточно шустро. Благо, что значение в перечислении не так много |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Построчный импорт из Excel через COM | 20 | |||
Проблема с импортом из Excel через COM | 18 | |||
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) | 15 | |||
связь с 1С через COM | 9 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|