|  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 | |||
| 
 |